feat(QueueRunner): accept optional error via done(err)

This pull request adds the ability to pass an optional error to the done
callback, indicating an async failure.

#### Example

```javascript
describe('async fail', function() {

  it('fails asnchronously', function(done) {
    setTimeout(function() {
      done(new Error('OOPS, async fail'));
    }, 100);
  });
});
```

#### Notes

* Should not break existing functionality, as done() does not accept
  any arguments so far.
* The err as the first argument is a common practice in NodeJS
  applications.

Closes #567