Interactive2: Fix MovablePoint draw() bug

Summary:
This commit fixes a bug where changes sent to
MovablePoint::modify() were not reflected in the rendered
movablePoint, because the draw function never modified the
attributes of the raphael svg component.

However, fixing that surfaced a couple other problems, which
this commit also fixes:
 * Mutliple calls to draw() were not guaranteed to see all
   intermediate values of state, since modify() could update
   state multiple times. This is an important semantic for
   draw() to be able to translate a declarative api to the
   stateful api of an svg image without unnecessary svg
   manipulations, so this change makes modify() only update
   state if it is the initial `add` event
 * Raphael's .attr() function may modify its parameter object,
   so the .normalStyle() and .highlightStyle() methods now
   clone the style object, and this cloned version is given
   to Raphael.attr() to prevent Raphael from modifying the
   MovablePoint's state

Test Plan:
Used in the new numberline refactor
(I should add command-line tests for this in the future, but
haven't yet, sorry!)

Reviewers: alex

Reviewed By: alex

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