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
@enricruiz explains to me its not a problem to declare multiple times an exchange, so we can deal with it