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.
I think we'd be better off with a single spec here (instead of the five) that just verifies that `related` is the correct data structure, e.g.

```ruby
it "returns details of related content items" do
  expect(related).to eq(
    [
      { "title" => "...", "base_path => "...", "api_url" => "..." },
      { "title" => "...", "base_path => "...", "api_url" => "..." },
    ]
  )
end
```

As a developer looking at the code, I would find it far easier to understand what this code is expected to be doing if it looked like that. It's also fewer tests to read, understand and maintain.