Ability to have non-grid layouts

- Extract grid specificities into the Graph function
(thus replace `grid` parameter to a `graph`object)
- Regroup heuristics functions under astar.heuristics
- Update tests, benchmark & demo
- Added a specific test to demonstrate non-grid layout usage with a gps
heuristic