Make SelectEventPlugin not throw for range inputs

Accessing .selectionStart on a non-text input will throw (see http://www.w3.org/TR/2009/WD-html5-20090423/editing.html#textFieldSelection), so check that the input has selection capabilities before accessing the property.

Fixes #437.
Don't reset mouseDown in focus handlers

Focus fires after mouse down on initial click, so we lost the
flag when the user initially began dragging on the input.
fixed %d in invariant call
Fix ReactTransitionEvents detectEvents
Fix unmounting components mounted into doc element

If we are to unmount a component mounted into a document element we should
unmount it from document.documentElement and not from document.firstChild which
is a doctype element in this specific case.
Make 'disabled' MUST_USE_ATTRIBUTE for compatibility with CSS [disabled] selectors.

When a ReactDOMComponent is created with the property `disabled: true` subsequently setting the property to `disabled: false` the HTML attribute `disabled="true"` was being left in the DOM.
npm shrinkwrap

We should be doing this in the stable branch to ensure fuzzy
dependencies are met identically on subsequent releases.

In this case, browserify had a change in 2.34.3 which resulted in
JSXTransformer to be a different size. While it was a change for the
better, it was unexpected and not a change we were calling out in the
release.

This shrinkwraps to the same versions of packages we had when we shipped
0.5.0.
Update everything for v0.5.1
blog post for 0.5.1