Detect C++11 features automatically

Changed to automatically detect C++11 features and use ```shared_ptr<T>``` rather than the self-implemented smart pointer if possible.
Removed the ```ENABLE_CXX11``` switch because it is no longer useful.

This patch will cause the ABI incosistency between compilers (and also their verisons or options).
However, in my opinion, it is natural that objects produced by different compilers are not binary-compatible.