Avoid nested UnexpectedExceptionThrown exceptions.

If the exception caught is already a
com.qwirx.test.FakeBrowserEvent.UnexpectedExceptionThrown, then
rethrow it instead of wrapping it inside another of the same.
Make com.qwirx.test.assertEvents take an event handler instead.

Allows you to make assertions about events in the handler path, set
breakpoints on them, and stop propagation and control the return value
as you see fit, for more flexibility.