[cp mcr] Allow more than one widget to update props at a time
[cp mcr] Allow more than one widget to update props at a time

Summary:
When we call `renderer.showRationalesForCurrentlySelectedChoices()`
and there are multiple radio widgets in the item, we're going to call
`this.props.onChange()` in multiple of those widgets. This is in turn going to
call `this.setState()` in the parent renderer for both of those calls.
Unfortunately, with the way we were handling widget updates, only one of those
updates would end up going through, because of the batching of `setState()`s.

This diff updates how we handle updating widget props to allow more than one
widget to update at a time, by using the updater form of `setState()`.

NOTE: This might have some implications for how
`this.props.onSerializedStateUpdated()` works, because it might be called at a
different time now! I should test that, but I don't remember what we did to do
that.

Test Plan:
 - `make watch`
 - Visit
   http://localhost:8081/science/physics/one-dimensional-motion/acceleration-tutorial/e/rationales-test?final_mc_stylesk=1
   and find an item with more than one radio widget
 - Choose some choices (but don't get it correct), click the "check" button
 - See that both of the widgets show rationales, not just one of them.
 - Visit http://localhost:8081/prep-for/lsat/practice
 - Start a task
 - Click some choices and check the answer, see that it works?

Reviewers: mattdunnrankin, johnsullivan

Reviewed By: mattdunnrankin

Subscribers: lauren, jared

Differential Revision: https://phabricator.khanacademy.org/D36973

ariabuckles/perseus,ariabuckles/perseus,ariabuckles/perseus,learningequality/perseus,ariabuckles/perseus,learningequality/perseus