fatal focus error and fast move check

Fixed a fatal error where losing focus causes input to break;. Lookup
now has O(1) lookup. I figured since moveIsAvailable is called every
move anyway, might as well store the results at the start of the turn.