Refactored to use the new RabbitMQ java client (3.3.1)

* Use a single TCP connection and work at channel level in producers and consumers
* Removed reconnection related code, now uses the reconnection logic provided by the java client
* De/serialization has been decoupled in two new interfaces
looks like all those fields could be ```final```