Simple constant folding on patterns and code to rewrite unary + and - operators applied to literals.

Wrote tests for the nesting order constraint on structures.

Test Plan:
The tests still pass!
Added a comment.

Test Plan:
<see below>
Don't create `exports` variable in a browser

Summary:
The `var exports;` was creating an exports variable globally, which we don't want to do. Refactor code slightly so that only StructuredJS is created, not the others.

(I didn't know who to send this to, sorry!)

Test Plan: Tested in-browser and with command line tests.

Reviewers: leif, sophia, pamela

Reviewed By: leif

CC: ben

Differential Revision: http://phabricator.khanacademy.org/D4108
Automatic merge by 'arc land'
Add tests for passing in string
Support caching of parsed structres and most recent code.