Added ability to use std::shared_ptr or boost::shared_ptr
Changed include guards in header files