Use Rails' helpers to generate API URLs.

Rails, given context from an application and a request, knows how to
generate the URL for a content item, but the presenter doesn't have
access to this logic. Passing this in as a callable to the presenter
gives us a very small interface to replicate in the tests, and lets us
keep the app's routing logic out of the presenter.

The app doesn't have any such context for the URLs as they're used on
the site, so there's no real benefit to pulling out the web URLs in the
same way.
Make linked item lookups index-covered.

By adding an index with the fields we want to query on, including the
fields we want to return and expose in the public presenter, we can make
it so the linked item query never has to load the document itself.

Once we have 100,000 items in the content store, rather than the 100 or
so we have at the moment, we'll need to take a closer look at this index
and how well it performs. For now, it turns a query that does a scan
over the entire collection into an index-covered query that should only
need to scan a single document.

As another performance consideration, we're currently doing a query for
each linked item; we'll need to revisit that as we incorporate more link
types and therefore more linked items.
Improve link validation error message assertions