Draft: internal/server: add initial xenlight (libxl) xen.Driver implementation

This PR adds an initial, sort of experimental, implementation of xen.Driver using the xenlight package. I.e., call directly into libxl rather than calling xl with os/exec. The xenlightCtx type is used to implement the xen.Driver interface, and embeds a *xenlight.Context for convenience. A domainDeathHandler type is also used to assist xenlightCtx in waiting for domains to shutdown, reboot, die, etc. and then handle those events according to the domain configuration.

PCIDevice{Attach,Detach} are not implemented, because those APIs are actually never used in redctl today. The rest of the interface has been tested on PV- and HVM-based NDVMs, and linux HVM guests. Windows VMs have not been tested yet, though the implementation does attempt to account for VMs without PV interfaces (e.g. fallback to ACPI triggers on shutdown/reboot).

To control which implementation is used, a --xen-driver flag is added to redctld. Since xenlight is experimental, the xl implementation is the default. To enable the xenlight implementation, set --xen-driver=xenlight to the redctld command line.

As-is, the build now requires some xen library headers (e.g. libxl.h), but I intend to add an option to omit this from the build.

Finally, this branch relies on the golang-4.14 branch of my Xen tree, which contains patches from my open series on xen-devel: https://patchwork.kernel.org/project/xen-devel/list/?series=474795. So, I do not expect this PR to be merged until that series lands upstream, but I think this PR is ready for initial review.

Merge request reports

Loading