Improvements to pathfinding

Involving the areas in pathfinding. Checking if a tile is already used
in a path and if that validates the placement of a mirror or leaving a
space empty on the same tile later (should only be allowed if the tile's
mirror is the same as earlier in that path).