Heuristic Interface Added

Allows the developer to use their own Heuristic method but also includes
an implementation of the Manhattan Method