GUI

This is still in-progress, so I've unwired it from main.js (so none of my new code is being used yet).

I wanted to get it merged in though, because it contains some infrastructure stuff, like Squire for mocking requireJS dependencies (see terrain.test.js for an example).