The allocator is a singleton, so no need to pass it in to the constructor
Non-singleton allocator, must be passed in
Assign to an lvalue RefCounted
Assign to an rvalue RefCounted
Dereference the smart pointer and yield a reference to the contained type.