Add a failing test for unhandled rejections and chaining.

Introduces `Q.resetUnhandledRejections`, which is necessary for testing. Setting `Q.unhandledReasons.length = 0` like I was doing is dangerous, since it makes the `unhandledReasons` and `unhandledRejections` get out of sync.

Re: #238.
Fix duplicate promise rejections.

We can just reuse chained dispatched rejected promises.

The test was also broken; it needs to check for emptiness after fail()
runs.

Fixes #238.