make sure timer does not run with pointer to delete objects

move deletion of InternalSubscription to asio service to make sure timer. does not run with pointer to delete objects
Yes stopping timer is a right thing.
I mean we need save object until at least one method is executing. We can do with 1: hold shared pointer in lambda. We can call stop subscription and remove it from map. Object will continue to live until last lambda will finished. When lambda will be called we can safely access object members and check that work stopped and exit. When last lambda will gone object will auto deleted.