Implement proper submission/solution comparisons.

This adds verification to all of the existing exercises.

Two new npm packages were created for this:

* `gl-reset` resets the state and clears up resources between renders.
* `fresh-require` allows us to bypass browserify's require cache, which prevents running the test from breaking the preview (which was caused by the value of top-level variables changing).

Also includes the `@workshop/compare` package which compares two init/draw pairs, and `@workshop/server-basic` which eliminates the need for boilerplate in most exercises' server.js files.