Add multiple select instructions

Auditors: emily
Upgrade React

Auditors: emily
No fade out of categories on drag

Auditor: alpert
Remvoe unused Widget class and remove backbone

Auditors: emily
Disable scratchpad automatically

Summary: Right now all our widgets are interactive. I guess maybe they won't be in the future? We'll see.

Reviewers: eater

Reviewed By: eater

Differential Revision: http://phabricator.khanacademy.org/D3160
Functions!

Summary:
Added full support for logarithms.
Added basic support for trig functions.
Added full support for abs() and sqrt().
Added basic support for |x| notation.
Added full support for variable subscripts.

General code cleanup:
Removed a lot of brackets and parentheses.
Renamed distribute() to expand().
Moved asTex() to within ExpressionTools.

TODO:
Let content creators define which variables are functions.

Test Plan: src/expressiontools/test.html

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3153
Use KaTeX inside of perseus exercises

Summary:
Replace the <MJ> component with a <TeX> component that tries to render
math using KaTeX first, and then falls back to using MathJax if it fails. The
only big change is the way that that component is rendered, everything else
seems to work fine.

Test Plan:
Type some math that KaTeX can render. Add some math that KaTeX can't
render. Remove the extra math. Make sure the math looks sane throughout.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3121
Functions! (part 2/2)

Summary:
The missing pieces:
Content creators can now choose which variables are functions.
Expressions and equations with functions now take advantage of evaluation
as much as possible, and only then rely on simplification.

Also: This is the last edit to ExpressionTools within the Perseus repo.

Test Plan:
Making sure all tests pass on src/expressiontools/test.html
Making new items with and without function variables on local copy.
Saving, previewing, and modifying these items and confirming expected behavior.

Reviewers: alpert

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3187
Configurable ranges for interactive graphs.

Test Plan:
Add an interactive graph widget on test.html. Try altering
ranges, and see if the suggested steps are sensible. Make sure
bad range / step gives an error message instead of breaking. Try all
plot types with various ranges, including ranges with different scales.

Reviewers: alpert, emily

Reviewed By: alpert

Differential Revision: http://phabricator.khanacademy.org/D3110