CP-5931: Add flag to enable/disable the VNC console with vGPU

Setting VM.platform:vgpu_vnc_enabled to "true" or "false" will enable or
disable copying of the vGPU's framebuffer to the VNC console. The
setting will default to enabled if the platform key is not present.

Imported from xen-api.git aaae0111e4cc72c258e54d18616088bf5ce23d57

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>
CP-6853: Add a means of passing arbitrary arguments to vgpu

The contents of VM.platform:vgpu_extra_args (if any) will be passed to
the vgpu process (and in turn to the NVIDIA plugin).

This change also removes the vgpu_vnc_enabled key, since it can be
passed via the new mechanism (and is also mostly obsolete, since VNC
disabling is now automatic).

Imported from xen-api.git fcbbfb751493cd607d65d18018684087fd566e93

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>
Re-use the dev type in device.mli

Plus some minor whitespace fixes

Imported from xen-api.git b745d135abdb1f32ff160cb948e3de9ceb73344f

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>
CP-6968: Add mechanism for binding PCI devices to the NVIDIA drivers

Imported from xen-api.git f334de664254d7409f812920483d14e9a4dcd9a1

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>
CP-6968: Bind GPUs to the NVIDIA driver when required

When creating a vGPU, make sure the target physical GPU is bound to the
NVIDIA driver first.

Imported from xen-api.git c3b6069aa5c752be70b40f6261496ab7a3505504

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>
CP-6968: Lock NVIDIA devices before unbinding

Imported from xen-api.git 31aa6af9a9f833d86075f4f39305e823a4fc20e9

Signed-off-by: John Else <john.else@citrix.com>
Imported-by: John Else <john.else@citrix.com>