update the `toThrowWith` matcher to accept a callback

update the `toThrowWith` matcher to accept a callback to run custom matchers against the the thrown exception