Support passing 'done' as async callback

The done function should operate like a standard node callback where the first parameter is interpreted as a potential error.

This would save keystrokes when testing the happy path for an async function. Here's an example from the supertest docs:

```
Here's an example with mocha, note how you can pass done straight to any of the .expect() calls:

describe('GET /users', function(){
  it('respond with json', function(done){
    request(app)
      .get('/user')
      .set('Accept', 'application/json')
      .expect('Content-Type', /json/)
      .expect(200, done);
  })
})
```