Added a basic_client class, that is a level between a request and the connection associated with it, which controls the input and output formatting and scheduling. For instance, in the case of FastCGI - at least as is planned at the time of writing - it is the client which is responsible for wrapping a buffer in the protocol-specific way; it must also ensure that a client holds a connection until it has sent each packet fully. In other words, so a shared connection doesn't steal the connection between a couple of read/write_some`s and break the output (which would essentially compromise safety quite significantly - if output from different sessions is interleaved).
Also added a shareable_tcp_socket which has a boost::mutex and boost::condition to simplify mutiplexing.