Reuse geometry for back-edge when geometry is reversed.

This should address #1511.

Results for an example street-data only graph:
```
         Graph size
         (mem)      (disk)     Gain %
    A    117502000  50288000
    B    111162000  45280965   5.4%
    (number of StreetEdge 354071)
```

A - Original version
B - With shared reversed geometry

Update: This pull-request also contains some small refactoring on hash-grid stuff (removal of original HashGrid implementation, tweak of some spatial index APIs).