Ability to have non-grid layouts

Hello,

Check out my commit and tell me what you think.

Your A* is great but was limited to a grid layout. I've added the ability to handle other layouts, such as a graph of cities.

- Extract grid specifities into the Graph function
- Extract heurstics functions into a specific object
- Update tests, benchmark & demo
- Added a specific test to demonstrate usage and gps heuristic
Yes, I'm using the same function for score and heuristic. A more advanced example could proceed this way:
* Use gps distance for heuristic
* Use real road distance for cost

But here I'm considering road distance is similar to gps distance. It's a convenient way to reduce test complexity.

This is not wrong. But doesn't fully demonstrated the A* capabilities.
Using something else for the cost would require more data for the test : a cost for each link...

I'll fetch road distance from google maps and complete the test in another pull request.