CP-5812: Move supported_VGPU_types field to the PGPU object

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Rename the passthrough VGPU_type to "passthrough"

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Remove a no-longer-needed check

We now allow VGPU creation even if the type is not one of those allowed
by the group.

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Fix the VGPU_type <-> PGPU relation

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Add a helpful comment for future explorers

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Add a relation between a PGPU and its enabled VGPU_types.

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Initialise a PGPU's enabled VGPU types on creation.

enabled_VGPU_types is initialised to be equal to supported_VGPU_types.

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Add relation VGPU.resident_on <-> PGPU.resident_VGPUs.

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Add setters for PGPU.enabled_VGPU_types

Created methods:

* PGPU.add_enabled_VGPU_types
* PGPU.remove_enabled_VGPU_types

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Add CLI support for PGPU.enabled_VGPU_types

Signed-off-by: John Else <john.else@citrix.com>
CP-5812: Reimplement GPU_group.get_allowed_VGPU_types

We start with an empty set of VGPU types, and for each PGPU in the group
we fold its enabled VGPU types into the set. We end up with the set of
all VGPU types which are enabled on at least one of the PGPUs in the
group.

Signed-off-by: John Else <john.else@citrix.com>
Merge pull request #1397 from johnelse/pr-1061-new-api

Restructure the relationship between PGPUs, GPU_groups and VGPU_types