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