Fixed critical obstacle avoidance error.

The program would crash with stack overflow every so often. This is
because while astarsearch checked the square 0.9 away to see if the unit
could go there, checkmove checked the square speed away to see if the
move was valid. So, astar would delineate a sequence of moves, checkmove
would say a move is invalid, so it would go to astar, which would insist
that the moves were good and return them again, and so on until it
crashed.