Ignore heartbeat messages

Shortly, we will start emitting regular heartbeat messages to the
published_documents exchange.  These allow monitoring of the consumers
of queues bound to the exchange, by checking that the last heartbeat was
received recently.  Heartbeat messages can be identified by their
content type header, which is set to application/x-heartbeat.

This commit introduces a HeartbeatMiddlewareProcessor, which takes
another processor as an argument to its construtor, and passes all
non-heartbeat messages received on to that processor.

Heartbeat messages are ignored (other than calling "ack" on them).  This
could be changed in future to record the time of the latest heartbeat,
for monitoring purposes.