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.
We're not restricting the list of link types.  These are up to the publishing apps to decide - we don't want to have to modify content-store every time a new link type is added.

Having said that, it's probably worth validating that the keys are a sane format (probably alphanumeric with - or _ only).