Preserve locale when moving around the site.

By introspecting which controllers can handle locales, we can target
our patch around named routes to only add locales for routes generated
to those controllers.

I've changed the cucumber features for world locations and offices
to exercise changing translations via the interface, in order to
drive inclusion of the locale links on those pages. I've also made
the step usage a bit more consistent, using the language name to drive
clicking on links to translations rather than jumping straight to the
locale.
Only generate a locale url if the object has a translation.

I've extracted the shared localisation methods into their own module.
If we start nesting models deeply this behaviour may need to become
more sophisticated in order to detect which object needs to be
localised.
Add a feature to demonstrate the persistent locale between pages.

This feature clicks on a translation link on the world location,
driving the presence of those links here.
Merge pull request #268 from alphagov/preserve-locale-between-pages

Preserve locale when moving around the site.

[Pivotal Tracker Story 44452983][1]

[1]: https://www.pivotaltracker.com/story/show/44452983