Implement a fast version of DirectionUtils.azimuth.

The default version is exact (take into account spherical geometry) but insanely expensive.
Replace with an equirectangular projection approxmimation (10 times faster and precise
enough for our purpose of computing nearest edges azimuth score (drive mode) and relative
directions from a 100m street to the next.

Benchmark for 1000000 computations:
- 5535 ms for the exact version
- 375 ms for the approximate version.

Update unit testing with correct azimuth on artic and new approximations (91 vs 90 degrees).

The azimuth in artic region is now correct
(going from 180,90 to 180,89 is indeed going SOUTH).
Add unit testing for DirectionUtils azimuth stuff.

Test performances, and non-regression (max error).
Add meters to lon degree depending on latitude.

This will help in calculating better fitting envelopes for speeding
up spatial index lookups. And solving some bugs/features on the way the
nearest streets/vertices are found too...
Add meters to degree conversion unit tests.
Add trove dependency.
Add an hash-bin spatial index to replace STRtree.
Use HashGrid in graph spatial index service.

This reduce graph memory size (street only) by around 18%.

Also:
- Filter out false positives by checking for envelope intersection
- Remove duplicated function (getNearbyTransitStop/getLocalTransitStop)
- Correct coordinate projection issue on corner lookup
Add hash grid spatial index unit test.
Merge remote-tracking branch 'origin/geometry-optimizations' into geometry-optimizations