Refactor events

I found https://github.com/FakeItEasy/FakeItEasy/pull/376 quite challenging to review, so I did it the only way I know how. I refactored the lot :grimacing:.