Allow GPS-exact routing (not just from junction to junction) #27

This pull request will fix #27 if ready. Not yet ready as there are still some bugs if query points are on the same edge, but I would like to invite you to try it out and report problems and API design.

There are several possibilities to get a GPS-exact routing working.

At the beginning I pre-calculated the possible start and end junctions (tower nodes), followed by an unchanged routing algorithm where a final post processing step would be required - like adding the required points to the path at the beginning and at the end. This would have been relative clean API, no performance overhead and more importantly: stateless, but the post processing was very complex especially if there would have been more than two points involved. See here: https://github.com/graphhopper/graphhopper/commit/ade2e9ef4dd1c4a26564079bd360af98878a6d79 (Update: the next approach is not less tedious - especially because we want to make it working for multiple query results. So this first cleaner apprach is probably worth some reconsideration if we encounter problems for many query results)

The final approach which I'll take is the "virtual/phantom graph" - approach. Every query point turns into a junction (tower node). To make this thread safe I introduce a QueryGraph which is created per request and can take multiple points. There is still an API glitch where one needs to call algorithm.setGraph and locationIndex.findClosest(graph<-, lat, lon) but I think I can fix this as well in the next days. The downside of this approach is that the graph is then stateful (QueryGraph) and it is slower in theory as it uses a map within EdgeExplorer.setBaseNode, but the difference is very small and not measureable - at least for only two points.