Clean up event fields and add unit tests

This adds options fields to events where appropriate, with a default value to preserve BC.
Improve find/update events and use MutableEventArgs for post listeners

With the addition of FindEventArgs, find events will not receive the field projection in addition to the query. UpdateEventArgs now has options.

A new MutableEventArgs class was created to allow Collection query/command results to be modified by the post event listeners (as requested in #94).

Finally, CollectionEventsTest was created to test all pre/post events dispatched by Collection methods.