Changing API to wait for threads to finish shutting down.
Simplifying Event
Removing unneeded constructors
Removing Comparable interface, it was included before 3.0 for unknown
reasons as it has never been used
Adding more null checks in EventDriver.
Cleaning up how POS EventDriver are extended
Simplifying EventDrivers by extending where possible
This allows for a reduction in the number of EventDriver objects created
and removes the need to generate new Event objects inside of the
extending EventDrivers