Add cache-control and expires header in reponse

www.agileplannerapp.com/boards/173808/cards/4800

Cache-Control public allow intermediaries to cache
content. Expires is preferred over max-age or else
we would have to reduce the max-age as we approach
scheduled publishing time of an upcoming edition.

related links:

www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1
www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21
Merge pull request #29 from alphagov/set-cache-control-expires

Add cache-control and expires header in reponse
Explain intent of update_types
Merge pull request #31 from alphagov/explain_intent_of_update_types

Explain intent of update_types
Upgrade to ruby 2.1.2

This has been in use for long enough to be confident in it now.
Merge pull request #32 from alphagov/upgrade_ruby

Upgrade to ruby 2.1.2
Remove ambiguous definition of 'republish'

We should document how migrated content is published when we get to it.
Merge pull request #33 from alphagov/remove_ambiguous_definition_of_update_type

Remove ambiguous definition of 'republish'
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.