Cleanup for EventModelPrivate and related code

Assorted set of cleanups related to EventModelPrivate and its subclasses. There aren't any major behavior changes here, these are just things I found while pursuing bigger fixes. See individual commits for explanation.