I added a few compatibility functions to make this work more like shared_ptr, and added some tests to prove this works.