Show linked items in published content

When submitting an item to the content store, publishing tools can now provide a `links` field, containing a hash of link types to arrays of content IDs. For example:

    "links": {
      "related": ["8242a29f-8ad1-4fbe-9f71-f9e57ea5f1ea", "9f99d6d0-8f3b-4ad1-aac0-4811be80de47"]
    }

When these content IDs correspond to items already in the content store, they get pulled out on the site side and displayed with titles, API URLs and site URLs.

Part of this work involved converting the presentation logic from a single `as_json` method on the `ContentItem` model to a public view (which looks up content items) and a private view (for responses to publishing tools, and notifications to the message queue), both implemented in presenter classes.
:+1: That's a good pattern.  We're doing this in asset-manager [1] and [2].  This helps reduce the coupling between the presenter and the controller.

[1] https://github.com/alphagov/asset-manager/blob/master/app/controllers/assets_controller.rb#L8
[2] https://github.com/alphagov/asset-manager/blob/master/app/presenters/asset_presenter.rb