Cleanups to SharedPtr<> to amke const (etc) behavior more like std::shared_ptr<>