Remove CsmartPtr

The summary says it all.

I bet this will fail to compile due to modpython/modperl, but I cannot build them locally currently, so... yeah...
(Also ran out of time)

This changes module API, but at least external modules get a warning about a hidden, virtual function.

The constructor `std::smart_ptr<T>(T*)` is marked as `explicit` while CSmartPtr's construtor isn't. This things a little more complicated than just a simple search and replace. Yay for `std::make_shared`...