Allocators and smart pointers

  • add Allocator to smart pointers

(moved from #26 (closed))