Add a Function.constructor check to throws.

Allows you to also write:

```
t.throws(fn, TypeError);
```


> `caught.error instanceof expected`

Are we 100% sure that we want to allow lose inheritance-based matching here? For example, if a `TypeError` is thrown, if I assert the type is `Error`, that would pass.

I can see cases where I'd want either of those behaviors (though, for my current use-case, I need the strict test). Perhaps we should consider a completely separate assertion for one or the other.

What do you think @Raynos?