Add more abstract events to the event hierarchy.

The various ChangeEvents implement a lot of common duplicated
functionality. Create new abstract events to consolidate some of that
functionality. The new events are, Event, ProjectEvent, RefEvent, and
PatchSetEvent. Make Event the new base class for all other events, and
now use ChangeEvent only for events related to Changes.

Change-Id: I287c6524b826b42e78d8a3ce2d0951c045bb11b8
26 files changed