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.
Merge pull request #232 from laconbass/assert-throws

Avoid error instantiation if possible on assert.throws