We should allow passing error as an argument for done

This is a *must-have-feature* if we want to be able to use promises in tests. Currently, the following test is passing, which is of course an incorrect behavior:
```javascript
it('Should be able to assert within a promise code.', function (done) {
  Promise.resolve()
    .then(function () {
      expect(true).to.be.false;
    })
    .then(done, done);
});
```