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
Removed ping utility

See "Atomicity and use of the isOpen() method" in http://www.rabbitmq.com/api-guide.html