Radio: Make labels work on mobile

Summary:
There is a long-standing mobile webkit bug with labels, where
clicking the text inside a label won't check the input correctly.

This diff adds onTouchStart and onTouchEnd handlers to the radio
labels that re-implement the label elements' functionality in
react, so that perseus radio labels work correctly on mobile.

This diff also changes the radio's implementation to use
pure controlled components, rather than grabbing the DOM state
of radio/checkbox inputs after an event occurs.

Test Plan:
On the web:
 * Tested grading various radios in normal chrome's test.html
In the mobile app:
 * Tested clicking on a wrong answer, then a right answer's text,
   and made sure that doing this on multiple questions graded
   correctly

Reviewers: eater

Reviewed By: eater

Subscribers: alpert, ben

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