Fix a dereferentiation of a deallocated pointer

There was a nasty bug in thread_worker that was causing a potential
dereferentiation of a deallocated pointer. The new thread was created with
a lambda function as start point, capturing 'this' variable. It was
possible that the thread_worker was deallocated before the new thread
began to execute. When it starts, it dereferenciates the 'this' pointer
causing a potential memory corruption or SIGSEGV.
Extract io_service from async_tcp_server

So far, the `boost::asio::io_service` used by `async_tcp_server` was
initialized by the constructor of the latter. That prevents the IO service
object to be used for other purposes.

This change refactors `async_tcp_server` so it accepts a `io_service`
object in its constructor. In addition, the lifecycle of the IO service
and the thread executing its event loop is decoupled from the async
server.

Also some clean up of the network.h file was done, including the coverage
of connection errors in `tcp_client` and the corresponding tests in
`network-test.cpp`.
Adapt server-itest for external IO service

This change adapts server-itest in order to externalize the IO service
from the flight_vars_server object. With the io_service instance
externalized, it's possible to test how fsuipc_flight_vars can be checked
for updates using the IO service and the same thread that is serving the
TCP connections.

This closes the issue #12.