Clean up event fields and add unit tests

This adds options fields to events where appropriate, with a default value to preserve BC.