[Lakes] started edge and nieghbours list seems to be working like expected.
[Lakes] now works in trivial cases.

For more complex cases, we don't have to process the tile closest to the open
edge, but rather the closest tile in the other body.
[Lakes] basic conversion of `_map` from array to AIList
[Lakes] It works!

It seems to be very slow (at least the first time around). Let's see if I can
make it run a little faster...
[Lakes] fix connected area bug

Before, if you added a tile adjacent to an existing tile group, it wouldn't
recongize the connection between the two groups. Now it does.
[Lakes] Working.

But can be very slow on long path (the first time).

I tried convert `_map` back to an array, but this made nearly no difference in
overall run time (so I'm leaving it as an AIList).
[Lakes] speed ups

create an array of AILists to keep track of which tiles are in which
group (allowing look up by GroupID)
[Lakes] Don't double add tiles

Tiles we being processed another time if they showed up in a second
group as an open neighbour.