Expose record's url in API responses

When the API is created with a `baseUrl` and `apiBaseUrl` option
it can use that to generate links within the API output. This also
works on sub-documents, so the embedded memberships will have url
properties as well.
Make the filter module act as a transform function

Mongoose allows a `transform` option to be set which changes the return
value of `toJSON`. This change makes the filter module's method
signature match the transform function signature so that it can be used
in isolation.
Make sure url and html_url don't get indexed

These urls are generated dynamically so we don't want to include them in
the elasticsearch index in case they change.
Make search results mongoose documents

This means that they get the memberships and urls added to the json that
the API returns, as well as ensuring that hidden fields are still hidden
in search results.
Add tests for API links feature

This also fixes a bug I found while writing the tests (yes yes, I should
have just written them in the first place) with generating html_url's
for records that don't have a slug. If there is no slug on a record then
it's not currently possible to create an html_url.
Add docs for API base url to README

I've decided to omit the documentation for the `baseUrl` setting because
that's fairly specific to PopIt and therefore I'm treating it as a
private/undocumented API. So this is just the documentation for
`apiBaseUrl`.
5s timeout in search tests

Hopefully this will stop the search tests timing out waiting for
elasticsearch. Previously the timeout was 2s, which is enough most of
the time, but occasionally the tests would fail.
Merge pull request #24 from mysociety/api-links

Api links