2 reasons you can blame the ItemRenderer for serialized state

Summary:
Make serialized state:

 * work with group widgets
 * work with the itemRenderer and hints, instead of just
   the questionRenderer
 * have an explicit restore method instead of an initialization
   prop.

The latter is because in the long term we probably don't want
to remount a new itemRenderer every time we want to restore
state. In the short term doing this is good while switching
problems, because perseus historically hasn't been wonderful
about rendering a new problem on top of an old one
(interactive-graph might be grouchy, if i recall correctly).
But that's the direction we'd like to move in.
This also makes threading the state back through everything simpler.

So now, instead of passing in a savedState prop, we'll mount
the perseus ItemRenderer, then we'll call
`itemRenderer.restoreSerializedState(state)` to restore
state we've saved earlier.

Test Plan:
Add an item with an input-number, a group with an input-number,
and a hint with an input-number to itemrenderer.html.

Open itemrenderer.html, add '5', '6', and '7' to the inputs.

Call `var state = zk.getSerializedState();` in the console.

Clear all the inputs

Call `zk.restoreSerializedState(state);` in the console.

See '5', '6', and '7' return.

Reviewers: michelle, johnsullivan

Reviewed By: johnsullivan

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