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
Remove useless comment
Remove useless local variables in Graph constructor
Rename GraphNode to GridNode because only used in grid mode
Move gps heuristic function to tests.js

Also clearer segmentation between heuristic function and cost function.
refactor #21 to include getCost(), make a separate graph type for cities, and document the new search interface
prep for 0.3.0