Conditional async_client liftetime_thread creation

Create a thread and add it to io_service only if io_service is internal. If passed from outside by a user - do not change it.

Fixes #430 
Fixes #422