Added a templted copy-constructor doing cast from shared_ptr<U> to shared_ptr<T>