Avoid error instantiation if possible on assert.throws

Given an error constructor as function, try to get the error name from
its prototype or itself before relying on the old behaviour.

Closes #220

Replaces [the old pull](https://github.com/chaijs/chai/pull/221) to avoid
useless commits.
assert: .fail() parameter mismatch. Closes #206
Merge pull request #232 from laconbass/assert-throws

Avoid error instantiation if possible on assert.throws
assert: .throws() returns thrown error. Closes #185
Merge branch 'master' of github.com:chaijs/chai
docs: add contributing.md #238
Release 1.9.0
Deep equality check for collection membership
Merge pull request #228 from duncanbeevers/deep_members

Deep equality check for collection membership
Automatically rewritten for npm.