RefCounter mimics std::shared_ptr
Merge pull request #140 from TsudaKageyu/smart-ptr

Replace RefCounter with a smart pointer