Add IntegrationHelper module for ENV handling

Bring the common integration test configuration testing into a shared helper, as per

https://github.com/alphagov/vcloud-edge_gateway/commit/d94d9d3aa2e557a03ef37794173a9fa59a101544

This will ultimately be replaced by vcloud-tools-tester.
Add helpers to create/destroy vApp test fixtures

We need to create and tear down vApps in many integration tests for
Core -- Query, Vapp, Vm at least.

The self.create_test_case_vapps method creates a number of vApps in
a given vDC, with bridged networking to a list of networks. These
can have a configurable name prefix, to help distinguish/separate them
from other tests.

The self.delete_vapps takes a list of Vapp objects as returned by
self.create_test_case_vapps and destroys them.
Initial Core::Vm integration test

Basically a boilerplate:

- set up a vApp+Vm
- quick test to ensure it was created.
- Add some contexts for the methods that require update in the API
Add Vm#update_memory_in_mb integ tests

For increasing and reducing memory

This highlights that Vm#memory returns a string :(
Add integ test for Vm#update_name
Add integ test for Vm#vapp_name
Add integ tests for Vm#update_cpu_count

Decrease and increase CPU count. Like Vm#memory, this highlights that Vm#cpu
returns a string :(
Add Vm#update_metadata integ tests

Test that metadata updates preserve existing metadata.

Add a test to highlight that Vm#update_metadata also updates parent vApp metadata.
Add Vm#add_extra_disks integration tests

This also adds a helper function to get *just* the disks returned by
(Model) vm.disks -- it returns the disk controllers (SCSI+ID) too, which
we can filter out by matching on name =~ /^Hard Disk/
Add Vm#configure_network_interfaces integ tests

Test that we can create single and dual nic systems.

This highlights that Fog is misbehaving wrt the vcloud_attributes
section for network cards -- ensure_list! is missing, so we get a
Hash if there is one NIC, an Array if there are >1.
Skip Vm#configure_guest_customization_section tests

Vm#configure_guest_customization_section contains and calls a lot of
code that handles the 'preamble script' generation, including
reading this from an external file.

This work is better done in Vcloud::Launch::VmOrchestrator, with
an interpolated preamble passed to core as data.

Leaving this test alone for now until we decide what to do, there
are tests in alphagov/vcloud-launcher for this already, so there is
no major reason to re-implement them here right now.
Fix Vm#configure_network_interfaces test logic

On testing against a second provider, it was noticed that
the :NetworkConnection section returned by the API via Fog is
not ordered as per the insertion order.

Update the test logic to sort the returned array based on the
:NetworkConnectionIndex parameter, which then allows us to test
each returned hash in respect of the order we used to insert them.
Add Vm#update_storage_profile integ test

If storage profiles are available, switch the Vm from the default
storage profile to a new storage profile.

Allow for marking the test as pending if storage profiles are not
available, by setting the new storage profile to be the same as
the default one.