Add Bunny gem.
Add queue_publisher.

Simple facade for a message queue connection which is initialised on app start,
connects to an exchange, and exposes a publish method.
Send message to queue on save/upsert.
Integration test for QueuePublisher.
QueuePublisher fixes.

* Rename publish method to send_message to avoid overloaded term.
* Extract connection into a method for easier overriding.
* Remove connected? method: allow exceptions to propagate if connection fails.
Add unit tests.
Moved message queue config to yaml file.

This enables overriding on deployment. Keys are the standard options for Bunny
(see http://rubybunny.info/articles/connecting.html) with the addition of
:exchange which defines the topic exchange to create for the queue publisher.
Ensure pre-existing exchange, persistent messages.
Remove test around non-existing exchange.

The desired behaviour (content-store does not create the exchange) is
now handled by rabbitmq permissions - the content_store is not allowed
to create exchanges
Add per-Rails.env sections to the rabbitmq config.

Also update the integration tests to use server-generated non-durable
queues.  This ensures that the tests are isolated from each other, and
that the queues are deleted after each test run.
Add task to watch the message queue messages
Don't persist the update_type attribute

Due to a 'helpful' feature in Mongoid, it you call `update_attributes`
with keys not defined as fields on the model, Mongoid will still persist
these into mongo for you.
Validate format of fields used in the routing_key
Set content-type for published messages
Validate presence of update_type on edit.

This is required by the message_queue, so has to be set when writing a
content_item
Improve reliability of message_queue integration tests.

There is occasionally a small delay between rabbitmq accepting a
message, and that message being available on the queue.  Add a retry
mechanism to handle this case in the tests.
Refactor QueuePublisher and tests.

Simplify the tests to avoid having to stub all the different layers
within Bunny.  Also move all the rabbitMQ connection setup into a
separate method.
Merge pull request #30 from alphagov/message_queue

Message queue implementation