Ensure the submarines can locate each other

Perform path-finding between the top left water tile to the bottom
right water tile. If there is a path, then we deploy submarines.

If there is no path, meaning one of the submarines are in a hole.
We continue the `.shift()` and `.pop()` again on the water tiles
and repeate the pathfinding process.

If, which rarely happens, that we only have 30 water tiles left,
and the path has not been found, then we generate a new map, and
repeating the whole process again.