Improve exception info for ASIO adapters

In sync_read_stream_adapter and sync_write_stream_adapter,
read_error and write_error exceptions are enriched with message info
to improve their legibility.
Add a bind_error for TCP server classes

Before this commit, an attempt to bind a TCP server to an unavailable
port didn't mean any error. This is fixed by making the tcp_server
and async_tcp_server constructors to throw a network::bind_error
exception when the port is unavailable.