replace hook with lifecycle event callback via libvirt bindings
func (c *Connect) DomainEventLifecycleRegister(dom *Domain, callback DomainEventLifecycleCallback)
should give us a callback when the domain hits different lifecycle states. The go docs dont seem to have the lifecycle state list, but i think it's virDomainLifecycle from the C docs.