JSX: Respect original spacing and newlines better

Fixes #335.

Now this JSX:

```
/** @jsx React.DOM */
var HelloMessage = React.createClass({
  render: function() {
    return <div>
      Look!
      <a href=
        "http://www.facebook.com/">Facebook
      </a>
    </div>;
  }
});
```

produces

```
/** @jsx React.DOM */
var HelloMessage = React.createClass({displayName: 'HelloMessage',
  render: function() {
    return React.DOM.div(null,
      " Look! ",
      React.DOM.a( {href:
        "http://www.facebook.com/"}, "Facebook "
      )
    );
  }
});
```

rather than the less-desirable

```
/** @jsx React.DOM */
var HelloMessage = React.createClass({displayName: 'HelloMessage',
  render: function() {
    return React.DOM.div(null,
" Look! ",      React.DOM.a( {href:"http://www.facebook.com/"}, "Facebook "      ),
    );
  }
});
```
Make constant propagation smarter about pruning if statements.
Don't update the docs version by default

This was leading to a lot of unnecessary churn in the config file since
different YAML versions were serializing differently.
Merge pull request #343 from benjamn/fix-if-statement-pruning

Make constant propagation smarter about pruning if statements
Give the user a warning when using unoptimized JSX code and send the user to the correct location in the documentation to optimize.
Correcting the markdown anchor
- removed creation of the id within the tooling integration doc (expect this to be done by @zpao's pull request)
- removed the if statement and now always provide a warning message (as proposed by @spicyj)
- improved the warning message
Merge pull request #359 from SanderSpies/master

Give the user a warning when using unoptimized JSX code
Add composition events to React.

Composition events make it possible to detect IME entry/exit.
https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent
Rename unmountAndReleaseReactRootNode() -> unmountComponentAtNode()

This is just a better name; we may revisit the name later.
Merge pull request #336 from spicyj/jsx-spacing

JSX: Respect original spacing and newlines better
Fix use of "it's" in docs
Fix typo in doc
Docs: Give headers ids for easy linking

This gives markdown headers an id so that we can link directly to
sections of our docs. This is better than the alternative of adding them
all ourselves.
Add ReactDOMSelection module

Add a DOM based selection module. This can both be used on its own and
in ReactInputSelection where our current implementation is lacking.

There is still some inconsistency with how IE and modern browsers
handle block nodes. Should be OK if we are just getting and setting
and not trying to set selection based on character offsets.
Move composition event to plugin with polyfill

Move compositionstart/compositionend to a new event plugin.

Add a polyfill that listens to key and mouse events and uses selection to
determine which text has changed.