Added domain start/stop/define/undefine event unit tests
Rename virDomainEventCallback to virObjectEventCallback
Renamed virDomainMeta to virObjectMeta
Renamed virDomainEventQueue to virObjectEventQueue
Renamed virDomainEventState to virObjectEventState

but left virDomainEventRegister and its Deregister brother as these are
legacy functions only for domain lifecycle events.
Renamed virDomainEventCallbackList* to virObjectEventCallbackList*

But kept the legacy Domain lifecycle event functions as is.
Created virObjectEventStateRegisterID

but kept virDomainEventStateRegisterID as a convenience wrapper around
this new function.
virObject-ified virDomainEvent

Added a parent class virObjectEvent for future event types
Create virDomainEventLifecycle to start removing the huge union
Renamed virDomainEventNew* to virDomainEventLifecycleNew*

to have some consistency with other domain events
Renamed virDomainEventNewInternal to virDomainEventNew

This change may be confusing at first, but provides a much more
consistent naming scheme for the virObjectEvent children construction
functions.
Create virDomainEventRTCChange to get rid of the huge union
Created virDomainEventWatchdog to get rid of the huge union
Created virDomainEventIOError
Created virDomainEventGraphics
Created virDomainEventBlockJob
Create virDomainEventDiskChange
Created virDomainEventTrayChange
Created virDomainEventBalloonChange
Created virDomainEventDeviceRemoved and removed the virDomainEvent union