Avoid error instantiation if possible on assertThrows (aka assert.throws). Closes #220

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