libxl: ocaml: add disk and cdrom helper functions

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
libxl: ocaml: add VM lifecycle operations

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
libxl: ocaml: in send_debug_keys, clean up before raising exception

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
libxl: ocaml: provide defaults for libxl types

Libxl functions such as libxl_domain_create_new take large structs
of configuration parameters. Often, we would like to use the default
values for many of these parameters.

The struct and keyed-union types in libxl have init functions, which
fill in the defaults for a given type. This commit provides an OCaml
interface to obtain records of defaults by calling the relevant init
function.

These default records can be used as a base to construct your own
records, and to selectively override parameters where needed.

For example, a Domain_create_info record can now be created as follows:

let c_info = Xenlight.Domain_create_info.({ default () with
ty = Xenlight.DOMAIN_TYPE_PV;
name = Some vm_name;
uuid = vm_uuid;
}) in

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
libxl: ocaml: use string for uuid

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
warning
keyvar
libxl: fix some init_vals
bitmap
libxl: ocaml: add casts to int-conversions, just to be sure

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
libxl: defaults

Signed-off-by: Rob Hoes <rob.hoes@citrix.com>
use camllocal
keyed unions
async