Change Api::Responder to support links

If links are present in the options they will be dropped into the _response_info json blob, and set as the Link HTTP header.

We use LinkHeader to render, but have a slightly saner API for sending the links.

It wants:
 [[url_1, [[attr_1, url_1_attr_1_value], [attr_2, url_1_attr_2_value]]],
  [url_2, [[attr_1, url_2_attr_1_value], [attr_2, url_2_attr_2_value]]]]

We use:
 [[url_1, {attr_1 => url_1_attr_1_value, attr_2, url_1_attr_2_value}],
  [url_2, {attr_1 => url_2_attr_1_value, attr_2, url_2_attr_2_value}]]

And handle the conversion for you.  URLs can't be a hash (you could specify the same URL for multiple links), but the attrs can.
Extract paginator and page presenter from api/detailed_guide_presenter

Also move the tests for it and the mainstream category tag presenter out of test/functional and into test/unit/presenters where they belong
Make Api::PagePresenter present some more pagination attributes

This is to better mirror the stuff that the content_api does.  We've left in our extra url stuff.
Api::Responder now allows providing links via the resource

Makes things a bit neater given some things have to go in several places, and things like next / prev rel links need to be generated by the paginated resource object.
Api::PagePresenter will expose links (next, previous, self)

This should complete what we need to comply with the conventions established in the content api.
Add a world location presenter

Represents the world location as json (title, iso2, slug, web_url, type) and has a url to find out what organisations are present in that location.  Currently the urls don't work as there's no controller behind them.
HCardAddress now html_escapes address details
Rewire HCardAddress to receive address formats from an initializer

This allows us to convert the test over to fast_test_helper (also had to add a couple of extra requires and use OpenStruct instead of Contact/Country instances).  Also means loading h_card_address doesn't do a YAML.load.
Extract base class from HCardAddress and new one

Moved HCardAddress to AddressFormatters::HCard, it inherits from AddressFormatters::Formatter and there is a new AddressFormatters::Text that simply renders the text representation of an address.
Add JSON addresss formatter

Respects API conventions, so you get:

{
  address: {
    adr: {
      vcard_attribute: vcard_value,
      ...
    },
    label: {
      type: type_value,
      value: formatted_value
    }
  }
}

We don't store a type on contacts so this can be supplied when rendering if you want it.
Add worldwide organisation presenter

Represents the world org with an array of offices (contacts + service list) and sponsors (orgs).
Fix detailed guide api controller tests
Add the api controllers for world locations and their orgs

As it's trivial I've added show routes for the location and orgs.
As we have show routes the JSON rep can include id's
Add .links containing rel: 'self' to api presenters
Redirect human urls the api endpoints if .json is requested

Just for world locations (index, show) and worldwide_organisations (show).
Explicitly require link_header gem