Refactor core server code to ease writing tests.

This has been achieved by creating 2 decoupled classes:
NioProcessor for managing read/write operations from/to network.
RequestsProcessor for managing and processing the HTTP requests.

They are glued by RequestsBus which is used
to exchange data between both processing classes.