Per level missing block tests

- Moved a bunch of test files from .json files to .js files.  This gives us a lot more flexibility, as we can now insert things like comments/single quotes/functions/etc.
- In src code, move our requiredBlock generators into their own files, so that we can require them from our test files.  In the case of maze, I also created a bunch of macros for repeated code.
- Added a bunch of level specific missing block tests, and a few more solution tests.  For both sets of tests, the info lives in the solution files.  We’ll run through a solution test if there’s an expected field, and a missing blocks test if there’s a missingBlocks field.