Improve Resolver exit behavior

The existing `ResolverAsio` is the sole use of `beast::AsyncObject` and its existing behavior during exit is less than ideal. This pull request removes the need for `beast::AsyncObject` by using the work queue as the indication of whether we are ready to exit. An unneeded thunk class is also removed and the interface is flattened.

Commit d589422 removes the class from `Beast` and should not be folded into the rest.

Reviews: @vinniefalco, @ximinez