Refactoring, more aggressive caching.
Refactored parsing code out of main.js, added specs for parsing code.
Makes es6 block scoping work.
Adds util specs.