Automated shell unit testing

This PR introduces a grunt target `shell-test` and runs it each time the `swf`, `flash`, or `player` targets are run. It runs the shell testing harness with a set of unit tests known to pass when run in the shell. Patches regressing these aren't allowed to be merged.

We should extend this set, obviously - both by extending the test files that are currently run and by introducing new ones.