Stop treating water like a wall

Gives water a nonzero move cost and patches up all (I think) of the ugly hacks that were required in order to then make water *not* act like a wall.

Closes #3676. Would be nice to see vehicle boats come after this.

I think I've gotten all of it, but since there are many different ways to find a tile's move cost, and many ways to decide if a tile is swimmable, I can't be 100% sure. I'm about as certain as I can get, though, after poring through the code with a fine-toothed comb.