Routing

This is a basic routing interface for osm.org implemented in JavaScript. Routing is provided by external services (in this commit, OSRM, GraphHopper, and MapQuest Open).

The initial aim is to provide A-B routing functionality with a coherent UI. There is much more that could be implemented, of course, but the focus has been on the simplest possible service for now.

There are two obvious omissions:

- Routes do not have permalinks and the URL history is never changed.
- Directions are not translated.

Both of these are some way outside my knowledge / comfort zone and I suspect others would be more efficient at coding them! Translation is expected to be done by the external service, so should be largely a matter of the routing engine passing the current locale.

Otherwise this should largely be ready. Comments/suggestions *within the existing scope* welcome: "wouldn't it be nice if it did this..." requests are probably best left for after an initial launch.

Thanks hugely to @apmon, @danstowell and @karussell for patches and suggestions so far.