Refactor everything to store state in one place

Summary:
The React devs claim that copying from props to state is an antipattern
and state should be used as little as possible -- instead, always tell
your parent about whatever change there was and keep pushing state up so
it affects props and comes back down to you. This does clean up some of
the code and fixes some bugs where (for example) toggling the randomize
checkbox reverts you to a previous copy of the radio content.  In
writing this code I tried to follow two rules (the sanity of which React
folks affirmed to me):

1. Don't copy from props to state
2. Don't read from the DOM except in event handlers

I didn't succeed everywhere and to make ItemEditor stateless I'll need
to change some code in the main webapp repo which I'll probably do soon.
I also skipped dropdown and interactive-graph in this commit but they
still seem to work -- I'll refactor both separately soon and also try to
clean up all of interactive-graph to be a bit clearer while I'm there.

Also I want to get rid of toJSON (easy to do now since everything just
returns its props!) and make a separate validation thing.

Test Plan:
Used most editor features: edited question, added widgets, added radio choices,
switched between answer types, added hints, removed hints.

Reviewers: alex, jakesandlund

Reviewed By: alex

CC: eater

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