Move note about picking latest item for duplicates

This note is only relevant when expanding links, so the note should
belong in that section rather than the section explaining what the
content ID is.  It's misleading otherwise, because when there are
duplicates `content-id`-`locale` pairs, we will still serve the older
one if its path is requested: it's only in link expansion that we
de-dupe.
Give details and examples of locale codes used

It's useful to have some examples of language codes we're allowing, and
links to the standards that define their meaning
Merge pull request #86 from alphagov/locale-documentation-tweaks

Locale documentation tweaks
Refactor heartbeat generationto reduce duplication.

mechanism for connecting to rabbitMQ etc.  This refactors the heartbeat
generation to use the existing queue_publisher.
Make heartbeat integration tests invoke rake task.

To ensure they are a full end-to-end test
Include message options in errbit error report
Merge pull request #87 from alphagov/heartbeat_sending_refactor

Refactor heartbeat generation to reduce duplication.
Don't allow dashes in format or update_type

In order to reduce confusion require underscores to separate words in
these fields (similarly to keys in the links hash).

There's only one format that was using dashes (manual-section), and the
publishing tool has now been updated to use underscores. A migration
updates existing items.

All the update_types in use are currently single words.
Integration tests for publish_intent cache headers.

Covers altering the cache-control headers for content item requests
where a publish_intent exists.
Set expires headers based on publish_intents

Read requests for content items now set a expires header based on a
publish_intent if it's present, otherwise fall back to the default of 30
mins.

This ignores publish_intents in the past with a leeway of 1 minute to
allow for small delays in publishing.
Delete publish_intents on content item publication.

This allows the newly published content item to be served with correct
cache headers.

This cleanup is skipped for republish updates, so that it's possible for
a publishing app to republish items without breaking the caching for
future scheduled items.
Bump moped to pick up fix for a small memory leak

See https://github.com/mongoid/moped/blob/master/CHANGELOG.md#202 or
https://github.com/mongoid/moped/commit/7e5ac3e for details.
rake task to cleanup expired publish intents.
Run cleanup task every night from cron

This also cleans up the cron config to be consistent with other apps.
In particular it changes the output to go to cron.log and
cron.error.log.
Merge pull request #89 from alphagov/bump_moped

Bump moped to pick up fix for a small memory leak
Basic CRUD for publish intents.
Gracefully handle extra fields in the input

Return a 422 witherror details instead of blowing up.
Introduce match_datetime RSpec matcher.

This handles matching times avoiding any rounding issues etc.  It also
accepts any of the various time/datetime classes, and additionally
accepts strings representing a datetime.
Merge pull request #90 from alphagov/publish_intents

Initial support for publish intents.
Merge pull request #88 from alphagov/underscored_formats

Don't allow dashes in format or update_type