Ability to have non-grid layouts

- Extract grid specifities into the Graph function
- Extract heurstics funcitons into a specific object
- Update tests, benchmark & demo
- Added a specific test to demonstrate usage and gps heuristic