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.
No, this is just for the level state. Now, when you get a test failure, you can see the difference between where objects are expected to be and where they actually are.

The compression / decompression is split out so that we can keep them compressed in testdata.js like this: "background moveguide player:0,background moveguide:1,1,\n1,1,1,\n1,1,1,\n"

But when you a test fails, you can print it like this: "background moveguide player,background moveguide,background moveguide,\nbackground moveguide,background moveguide,background moveguide,\nbackground moveguide,background moveguide,background moveguide,\n"