Add a couple components to help with async rendering

It looks like wrapper components might be a better way to manage promises and events than mixins, since a component encapsulates its own lifecycle and state.

**ChangeListener**, given a target emitter object, will re-render whenever a (configurable) change event is emitted. Ran into an issue with children not re-rendering, which is solved by passing in a `handler` function, which is annoying, but not the end of the world.

**PromiseRenderer**, given a promise, a `then` function, and a `catch` function, waits for the promise to resolve and renders with the results of the appropriate function. This is less annoying, since it'll force us to organize different render methods a bit more.

I extracted these from another branch I'm working on, so there are no examples here. Here they are in use:

```cjsx
module.exports = React.createClass
  displayName: 'BuildPage'

  render: ->
    <div className="content-container">
      <ChangeListener target={auth} handler={@renderAuth} />
    </div>

  renderAuth: ->
    <PromiseRenderer promise={auth.checkCurrent()} then={@renderUser}>
      <p className="form-help">Waiting for signed-in status...</p>
    </PromiseRenderer>

  renderUser: (user) ->
    if user?
      <div>
        <p>Signed in as: {user.display_name}</p>
        <p><strong>Projects</strong></p>
        <PromiseRenderer promise={user.attr 'projects'} then={@renderProjectsList}>
          <p>Getting your projects...</p>
        </PromiseRenderer>
        <hr />
        <a href="#/build/new-project">Create a new project</a>
      </div>

    else
      <p>
        <strong>You’re not signed in.</strong>
      </p>

  renderProjectsList: (projects) ->
    items = for project in projects
      <li key={project.id}><a href={'#/build/' + project.id}>{project.display_name}</a></li>

    <ul>
      {items}
    </ul>
```

Thoughts, @parrish, @aweiksnar?