Use shared_ptr if possible regardless of C++11 support

Changed to use ```shared_ptr<T>``` rather than the self-implemented smart pointer if possible regardless of the C++11 support.
Though ```shared_ptr<T>``` is a part of C++11 standard, some major compilers provide it prior to the C++11 support. 
```ENABLE_CXX11``` switch is removed because it is no longer used.