Fix Resolver shutdown behaviour

* Add Resolver prefix to logging.
* Fix AsyncObject::removeReference() logic.
* Fix work remaining logic.

I spotted this while playing around with Application Stoppable behaviour. 
Reviewers: @nikb @vinniefalco 
I use `ec` as the argument name its a common asio convention. You need to check for operation aborted, `if (ec == boost::asio::error::operation_aborted)`. You dont want to log that, because completion handler will always get opration aborted when the `signals` object is destroyed or when you cancel the pending I/O.