Adds optional callback to `setState`

This commit adds an optional callback as a second argument to
`setState`, to be called after `setState` runs.

We never guarantee synchronous execution of `setState`, and as per
@phunt, we don't want to make that guarantee because we may eventually
batch calls to `setState`.  @jwalke agrees with him.
Updated docs and check for truthiness

Change api docs to reflect presence of the new argument.  In addition,
callback was change to require only a "truthy" value.
markdown syntax

Small problem with markdown syntax in syntax-highlighted block.
Add callbacks to all public-facing state/props methods

All public facing {set,replace,force}{props,state} methods now support
callbacks.
Use proper names for scroll metric properties
Fix `ReactDOMInput` and `ReactDOMTextarea` Race Condition

This fixes a race condition if the `onClick` tries to update the input or textarea (e.g. by calling `setState`):

  <input
    onClick={function(event) {
      this.setState({somethingElse: true}); // Triggers an update.
      // event.target.value is now equal to the old value, fail...
      this.props.onChange(event);
    })
  />
Revert Flattening of Children

I still think the semantics of flattening children is valid but we'll
want to revert the flattening implementation while we solidify the
semantics and try another approach.

This reverts flattening so that this.props.children can once again be
either a single child, flat array or nested array.

mapChildren calls flattenChildren before doing anything else. This is
not the most efficient approach but I wanted to keep this inital diff
simple. It also ignores empty values for backwards compatibility.

We may want to try another approach where empty values are included
in the map.

Validation of keys is still done inside ReactComponent. Ideally I'd
like to extract that into a separate module but to avoid cyclic
dependencies, I'm keeping it in ReactComponent for now.
Merge pull request #143 from spicyj/ie8-fixes-2

Use proper names for scroll metric properties
Bump Commoner version to fix EMFILE errors.

Finally found a more robust solution for the "too many open files"
problem: https://github.com/benjamn/commoner/commit/ad72ba42db.

Closes #137.
Closes #138.
Bump Commoner version to disable dependency scanning by default.

If you are using bin/jsx independently, you may need to pass
--follow-requires to it if you rely on its dependency scanning.

Dependency scanning is still a good idea, but it's difficult to make it
work perfectly for everyone the first time they try bin/jsx.

Closes #131.
Merge pull request #144 from benjamn/fix-EMFILE-jsx-errors

Bump Commoner version to fix EMFILE errors
Merge pull request #145 from benjamn/no-jsx-dependency-scanning-by-default

Bump Commoner version to disable dependency scanning by default
Merge branch 'master' into async-state
Add figure and figcaption elements to React.DOM (already supported by jsx.)
Merge pull request #147 from lrowe/patch-1

Add figure and figcaption elements to React.DOM (already supported by jsx)
Batch together calls to setState, setProps, etc

The end of ReactUpdates-test.js is probably most illuminating for seeing how this works.
Blog: Autobind by Default

Kicking off the series of posts previewing v0.4
Upgrade Commoner to --watch directories instead of individual files.

This behavior is new in Commoner v0.8.3, following the incorporation of
@jeffreylin's `DirWatcher` implementation:
https://github.com/jeffreylin/jsx_transformer_fun/blob/master/dirWatcher.js

Watching directories instead of files reduces the total number of open
files, and copes better with editors that save files by deleting and then
immediately recreating them.

Closes #60.
Closes #71.
Add blockquote tag (already in JSX)
Remove autobinding warning

I think this warns on many legitimate use cases. We should get rid of it I think.