Tranformer: fix using react descriptors as refs

Test Plan:
 * subperseus
 * make a transformer item with "formal with movement" mode
 * save the item
 * do and grade the item

Auditors: alex
NumericInput: Fix Acceptable Formats

Summary:
Acceptable formats didn't work for numeric-input

Answers with no answer forms selected but "strictly match only these
formats" selected were impossible to answer. These now accept any format
of answer.

Test Plan:
Make a numeric-input in the answer area
[Example link](http://localhost:9000/test.html#content=%7B%22question%22%3A%7B%22content%22%3A%22a%5Cn%5Cnb%5Cn%5Cnc%5Cn%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%7D%7D%2C%22answerArea%22%3A%7B%22type%22%3A%22multiple%22%2C%22options%22%3A%7B%22content%22%3A%22%5Cn%5Cn%5B%5B%E2%98%83%20numeric-input%201%5D%5D%22%2C%22images%22%3A%7B%7D%2C%22widgets%22%3A%7B%22numeric-input%201%22%3A%7B%22type%22%3A%22numeric-input%22%2C%22graded%22%3Atrue%2C%22options%22%3A%7B%22answers%22%3A%5B%7B%22value%22%3A42%2C%22status%22%3A%22correct%22%2C%22message%22%3A%22%22%2C%22simplify%22%3A%22required%22%2C%22answerForms%22%3A%5B%5D%2C%22strict%22%3Afalse%2C%22maxError%22%3Anull%7D%5D%2C%22size%22%3A%22normal%22%7D%7D%7D%7D%2C%22calculator%22%3Afalse%7D%2C%22hints%22%3A%5B%5D%7D)
 * Check that hovering over acceptable formats works for various format
   selections
 * Check that grading works even if no forms are selected and strict is
   checked

Auditors: eater
Fixing trivial React warnings.

The Editor/Renderer key warnings still bother me, might get rid of them later.

Test Plan:
No functional changes. Loaded up all of the widgets in test.html and played
around with them; observed far fewer React warnings.

Auditors: jack
Add a tooltip component to perseus

Summary:
A semi-generic tooltip component. Allows placing a tooltip at any
of the four corners of a target, aligned in either direction.
Eventually should support centers of things too.

This should eventually be in react-components.

Screenshots:
{F16846}

{F16848}

{F16850}

Test Plan:
Made an InputWithExamples for the tooltip formats change,
and tried all eight position/alignment options

Reviewers: alex

Reviewed By: alex

Differential Revision: http://phabricator.khanacademy.org/D8757
Show acceptable formats tooltip for input-number and expression

Summary:
Adds a tooltip to input-number, numeric-input, and expression,
which shows the acceptable formats for that widget when they
are not located in the answer area.

Test Plan:
* Add an expression and an input number
* See they both have the tooltip that show up on focus.

Reviewers: justinjaffray, eater, alex

Reviewed By: alex

Differential Revision: http://phabricator.khanacademy.org/D8511
Add a React <Graphie> Component

Summary:
Adds a <Graphie> react component to provide a declarative interface for
adding graphie items to a perseus widget.

See src/widgets/example-graphie-widget.jsx for an example
See src/components/graphie-movables.jsx for the implementation of
MovablePoint
See src/components/graphie-classes.jsx for the implementation of
Graphie.createClass used to create MovablePoint
See src/components/graphie.jsx for the implementation of <Graphie>,
which renders the MovablePoint

Test Plan: Add an example-graphie-widget, and test grading at various points.

Reviewers: alpert, alex

Reviewed By: alex

Subscribers: brianmerlob, justinjaffray

Differential Revision: http://phabricator.khanacademy.org/D7994
Interactive2: MovablePoint::modify() Optimizations

Summary:
Optimizes MovablePoint::modify() so that it only makes DOM
modifications when necessary, rather than clearing and recreating
the point when called.

To do this, we separate out "props" and "state" in MovablePoint,
depending on whether they should be reset on a modify (props should,
state shouldn't, since it holds things like raphael targets).
(They're still both accessed by this.state, which makes some of this
code harder to follow, but keeps the external interface to movables
the same, which is somewhat nice.)

This is necessary to get good performance out of <Graphie>.

This also swaps around modify and update in terms of which is used
to implement which. The interfaces remain the same, but now modify
calls update, rather than update calling modify, as this was
slightly cleaner with the new code.

Test Plan:
 * put a breakpoint on the lines that modify the visibleShape or
   mouseTarget of a MovablePoint
 * play around with an example-graphie-widget
 * make sure that the point behaves nicely
 * make sure that grading works
 * make sure that the breakpoints are only hit on page load, not
   while moving the point

Depends on D7994

Reviewers: alex

Reviewed By: alex

Subscribers: alpert

Differential Revision: http://phabricator.khanacademy.org/D8659
Widget clearing prop whitelist instead of blacklist

Summary:
We've got some nasty issue on google code where widgets are being
reset when someone clicks the check answer button. I can't repro
this, but this widget clearing code is a bit suspect because if
executed, it could result in those symptoms, and this code has
caused us problems before. It should be safer to use a whitelist
here than a blacklist, because adding props to the renderer
won't later cause widgets to reset. Of course, the opposite
problem could occur, where we add a prop that we would like to
reset widgets when changed (anything related to the item), but
this case seems less likely.

Test Plan:
Test doing an exercise on staging.
Cross fingers.

Auditors: alex
Use native Function.prototype.bind

Summary: Almost entirely automated this conversion using https://github.com/benjamn/recast.

Test Plan: Crossed fingers.

Reviewers: jack, alex

Reviewed By: alex

Differential Revision: http://phabricator.khanacademy.org/D8844
substate