Promises

I want to add Promises to batman.js. Promises reduce "callback hell" which seems in keeping with the batman.js priority for developer happiness.

I've added an [ES6 Promise polyfill](https://github.com/jakearchibald/es6-promise) and included it in `src/dist/batman.coffee`. Application code just uses `new Promise`.

I think promises will be a big win for Batman.Model persistence operations. Consider this syntax:

```coffeescript
show: ->
  @render(false)
  App.Post.find(10)
    .then => @render()
```

```coffeescript 
  edit: ->
    promises = []
    promises.push App.Options.load() # must be loaded for iterator binding
    promises.push App.Tags.load()
    promises.push App.Post.find(params.id)
    @render(false)
    Promise.all(promises)
      .then => @render()
```

```coffeescript 
  savePost: (post)
    post.save()
       .then -> Batman.redirect("/posts")
       .catch (err) ->
         throw err if err not instanceOf Batman.ErrorsSet
         # else, just let validation errors show on the form
```

You can even use it with built-in controller error handling:

```coffeescript
  savePost: (post) ->
    post.save()
      .then => @redirect(action: "index")
      .catch(@handleError)
```

I welcome your thoughts about how to implement this feature and where to apply it!