Improve PGPU capacity error reporting

* Change error PGPU_INSUFFICIENT_CAPACITY_FOR_VGPU to be parameterised
  with a VGPU type, rather than with a VGPU.
* Modify Xapi_pgpu_helpers.assert_capacity_exists_for_VGPU_type to
  return a (exn, int64) Either.t so we can more easily find out why a
  VGPU is not able to run on a PGPU.
* Add Xapi_gpu_group.get_remaining_capacity_internal, which calls the
  same function for each PGPU in the group and, if there are no
  available PGPU, chooses an error to return.
* Fix the tests so that they still compile (and pass).

Signed-off-by: John Else <john.else@citrix.com>
Improve exception handling for VMs with VGPUs

Raise the exception newly returned from
Xapi_gpu_group.get_remaining_capacity_internal, rather than raising the
same exception whatever happened.

Signed-off-by: John Else <john.else@citrix.com>
Merge pull request #1454 from johnelse/pgpu-error-handling

Improve error handling for PGPU/GPU_group capacity tracking