fix #264 (bad movement masks), improve tests

Fixed silly movement mask bug.

This breaks the "legend of zokoban" test -- I made test failures now give *some* information (a state diff), but its usefulness & readability is limited for large states. Not sure precisely what's going on, it's likely that some part of Zokoban was experiencing the same bug. Hopefully it doesn't _rely_ on it.
I noticed the same issue with intermediate states, and I think something like zobrist hashing would be useful -- hash the board state after each turn, represent it as 2 or 3 base64 characters (12/18 bits), and concatenate it all. Then you perform the same hashes for intermediate states, and you can determine the precise point where you diverged. In some cases, the 'error syndrome' (xor difference between expected intermediate and actual intermediate) might be stable, so you could pinpoint a single divergence in a long sequence.

Or, the engine could somehow be isolated or modularized enough that you could run two different versions in parallel for comparison.