Basic expression editing and testing functionality.

Summary:
ExpressionTools exposes two main methods:
parse() attempts to parse a mathematical expression and returns
{ parsed: true, expr:Expr } or { parsed: false, error: Number }.
compare() takes two Expr objects and options to determine equality.

Currently can test that two expressions evaluate equally and/or have the
form (structure and coefficients), and that an expression is simplified.
Now with auto-completion for parentheses!

Test Plan:
Parsing/transformation related tests are in src/expressiontools/test.html
Rendering & editing tests are in test.html and testrender.html
Most important is personal testing on my local KA webapp.

Reviewers: alpert, eater

CC:

Differential Revision: http://phabricator.khanacademy.org/D2394
Automatic merge by 'arc land'

Review: alpert, eater

Conflicts:
	src/editor.js
	test.html
	testrender.html