Exceptions in handler code do not terminate connection

Currently, any RuntimeException thrown in handlers causes the RabbitMQ connection to be closed (and never to be opened again...).

This patch catches RuntimeExceptions and logs them as warning.