Update Xen Events

This PR in an overhaul of the entire Xen Events subsystem. Several changes are introduced to both the internal system and to the events API as well.

Summary:
- Introduce separate GHashTables for mem events and reg events (as per Nasser's suggestion)
- Switch to using vmi_event_t pointers, instead of duplicating the events internally.
- Include the callback function pointer in the vmi_event_t structure for consistency
- Check for duplicate event registrations and expose API functions to manually check as well
- Fix VM hang issue when events are destroyed but the ringbuffer is non-empty.