Enable optional shared_ptr use for the derived service class instance

This is triggered by the service deriving from
std::enable_shared_from_this<_derived>; not generally recommended but
could be useful in certain circumstances