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.
Factory method so can construct with zero args.
Factory method. Not necessary with non-global allocator but included for symmetry.