Add robust handling of RabbitMQ connections

I replace `.connection` method calls on the broker with kombu's own
retry method calls and wrapped them with appropriate exception handlers
and logging messages.

I also added a SystemExit handler to the core loop to control exit from
the loop and handle appropriate exceptions with logging.

When faced with a socket timeout we attempt to re-establish the
connection and will log and exit if that retry mechanism fails to
establish a new connection.

Fixes DHC-2262
Nit picky, I know, but missing docstrings, even for private functions, make me cringe.