Use constants instead of strings for action types.

In response to feedback from Raynos:
https://github.com/facebook/react/pull/1258#discussion_r10758940
Clean up code surrounding areAllComplete.

In response to feedback from plievone:
https://github.com/facebook/react/pull/1258#discussion-diff-10642703
https://github.com/facebook/react/pull/1258#discussion-diff-10642748
https://github.com/facebook/react/pull/1258#discussion_r10642834
Improved communication between store and controller-view.

 - Created methods in the store so the controller-view does not need to
   know about the 'change' string for the event name.
   In response to Raynos:
   https://github.com/facebook/react/pull/1258#discussion_r10758940

 - Move the event listener set-up to componentDidMount instead of
   componentWillMount so that it will not attempt to create an event
   listener when this runs on a server.
   In response to plievone and spicyj:
   https://github.com/facebook/react/pull/1258#discussion_r10830150

 - Fixed bug in TodoStore switch statement in response to feedback from
   plievone:
   https://github.com/facebook/react/pull/1258#discussion-diff-10642857
Add waitFor method to Dispatcher to explain the full extent of what a Dispatcher is expected to do.