Fix: `__.instanceOf(...)` threw when describing undefined values
Reduce boilerplate in type matchers by providing a default implementation
Redefine interaction between `promiseThat` and `isFulfilledWith`/`isRejectedWith`

Promise fulfillment is delegated to the matchers `promiseThat` allows matchers to return promises. This allows custom matchers for conditions that can only be verified asynchronously.
Allow non-q promises to match `__.promise()`
Allow asynchronous mismatch description (needed for describing non-q promise mismatches)
Update dist files
2.1.0