Add `expectWithReason` matcher + cleanups

I have added a new matcher that lets you check the reason that an NSException was raised. I also patched up a number of annoying warnings while I was at it. Tests are in place, should be a straightforward merge.

Cheers,
Blake