Test Framework [NOT READY TO MERGE]

I'm not quite done with this, but I figured it's pretty obvious the direction I'm taking with this, and wanted to make sure that other people were happy with this too. Basically, the way that it's going to work is every test extends the class `Test`, overrides the `name` property, and optionally overrides the other properties. Once that's done, every language that has a `prereq` and `test` script will be tested (see the README for more details).