NumberLine: Refactor to use <Graphie>

Summary:
Refactors the number-line widget to use the new <Graphie> react
component and declaratively create its graph elements, rather
than managing the graphie state explicitly, which is difficult,
repetitive and error-prone.

Test Plan:
 * run a perseus server using `make server`
 * open localhost:9000/test.html
 * Delete all contents in the Question area
 * Add a number line widget
 * Test basic grading:
    * Add a correct x answer (in the editor)
    * Grade it using `score` and look for the output in the console,
      making sure it returns `empty: true`
    * Move the dot to an incorrect location
    * Score the question and make sure it has `correct: false`
    * Move the dot to the correct location
    * Score the question and make sure it has `correct: true`
 * Test initialX:
    * Type `7` in the position text-box in the editor
    * Make sure the number-line point moves to 7
    * Make sure that grading now returns `empty: true`
 * Test range:
    * Change the range after `position`
    * Make sure the number-line position updates accordingly
    * Test basic grading with this new range
 * Test `labels` and `style`
    * Change the range / tick step to something with fractional tick marks
    * Change the labels from their defaults
    * Try the three different styles, and make sure that
      decimals/fractions/mixed numbers display correctly
    * Make sure that integer values display correctly for the above
      three styles as well
 * Test `num divisions` and `tick step`:
    * Try different values for `num divisions` and `tick step` and
      make sure that the resulting ticks look correct
 * Test `snap increments per tick`
    * Change `snap increments per tick` to 3, and check that you can
      snap to three things each tick
    * Test basic grading with this change
 * Test inequalities
    * Go through the basic grading procedure with:
       * empty
       * wrong for different points, different inequality directions,
         different circle open/closedness
       * correct
 * Test tick controller
    * Leave inequalities on
    * Check `show tick controller`
    * Adjust the tick controller
    * Set `snap increments` to 1 (otherwise thinking about the
      positioning between ticks is confusing, though I've tested this
      too)
    * Make sure that the orange dot repositions itself onto a tick when
      you let go of the tick controller (and not before)
    * Make sure that changing circle openness correctly updates the
      visual appearance and button text of the circle
    * Make sure that switching the direction of the arrow correctly
      updates the visuals
    * Test basic grading
 * Test `num divisions range` when tick controller is enabled
    * enable the tick controller
    * set the range after `num divisions` to [3, 5]
    * Try adjusting the number of ticks using the tick controller
    * make sure it snaps to three locations, 3, 4, and 5 divisions
 * Celebrate!

Reviewers: charlie

Reviewed By: charlie

Subscribers: leah, alex, eater

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