Rewrote the A* algorithm implementation

Don't use a matrix for the Nodes: instead use Maps and Sets to support
Path calculation from the player's actual row and column and value.

Still need to check if a Tile is unmovable but the implementation works
at a basic level.