Invalidate the queueing consumer object once a poison pill is inserted

Previously, messages could arrive after the poison was inserted but
before it was dequeued, such that repeated calls to #nextDelivery()
might return a message, or throw an exception, with no apparent
causal order (from the caller's perspective). Now, once the poison is
inserted, the consumer is useless and must be abandoned.