Be more careful when moving head/tail pointers

If we are at the edge of the board, we should not assume we intend to
move our head/tail to the other edge of the board unless we are really
moving in that direction.

Hopefully fixes the invisible positions of death that get left behind
sometimes when we go off the edge of the map or use teleporters.

https://bugzilla.gnome.org/show_bug.cgi?id=654072
Don't skip last space on board when moving left/up

This would be a harmless, hard to notice visual glitch, if not that our
test for whether the head can move to this position (different from this
code, which controls the actual movement...) thinks this doesn't happen.
So we can end of slicing off part of an enemy worm without getting
killed.

https://bugzilla.gnome.org/show_bug.cgi?id=654072
Fix corner-case handling of tail teleportation

What we do here is really insane. After our tail moves into the
teleporter, we erase it from the text board and remove its clutter
actor, but then intentionally leave the tail pointer stationary,
trusting to the gnibbles_worm_get_tail_direction function to position it
properly on the next turn, then warping and moving the tail pointer an
extra time on that turn. This kind of works because
gnibbles_worm_get_tail_direction() operates on the clutter actors, which
are stored in a linked list and do know their position. But it's also
super fragile if we do anything interesting with the teleporters (e.g.
teleport immediately on the next move, because we came at a teleporter
from a particular direction). So instead of this
don't-move-then-move-twice nonsense, assume that if we ever do not know
which direction to move in it's because we're at a teleporter, and try
to use it.

Also, add a couple sensible assertions to make sure this assumption
always holds.

https://bugzilla.gnome.org/show_bug.cgi?id=654072
Regularly assert each worm is the proper length

No bug can withstand the awesome power of invariants! Yeah!

https://bugzilla.gnome.org/show_bug.cgi?id=733429
Fix worm length after respawn

We accidentally leave a one-space invisible position of death behind our
worm at all times after the worm respawns (for the duration of the
current map). Invisible positions of death are bad so let's get rid of
it.

https://bugzilla.gnome.org/show_bug.cgi?id=733429
Add a couple more good assertions

After we finish moving, the square our tail is on ought to be marked as
such. This assertion likes to fail when we trigger the teleporter bug.

https://bugzilla.gnome.org/show_bug.cgi?id=733429