for some reason need typedef to get const get_deleter working
added observer tests
fixed swap. unfortunately, swap for c++03 mode doesn't quite forward
correctly.
added tests for reset
specialize std::swap for unique_ptr if no unique_ptr implementation.