Added support for dead-letter exchanges.

Added support for declaring queues with the x-dead-letter-exchange argument
now supported by RabbitMQ (see http://www.rabbitmq.com/dlx.html). That
argument will cause the RabbitMQ server to automatically publish rejected
messages to the given exchange along with an x-death header that contains
information about when the message was dead-lettered. This feature is
intended as a more versatile alternative to the dead letter queue
functionality currently provided by RabbitBus.

The configuration and convention classes were modified to allow specifying
the name of the dead-letter exchange that should be used. The Subscription
class was modified so that it honors the new setting and declares the queue
with the x-dead-letter-exchange argument when specified. The ErrorContext
class was also modified so that it uses the configured IDeadLetterStrategy
(which should be NullDeadLetterStrategy when the dead-letter exchange is
used) as opposed to always publishing rejected messages to a queue with a
hardcoded name.