Create and Attach Independent Disks

Independent Disks are their own vCloud Entity, unrelated to the 'local' disks
that can currently be added to VMs via the Vm#add_extra_disks method.

Instead, independent disks are created as their own entity, and *attached*
to a VM. This can be done when the VM is stopped or running. When the VM is destroyed, any attached Independent Disks will be detached, but not destroyed. They can subsequently be re-attached to another (usually recreated) Vm.

They are conceptually similar to AWS Elastic Block Store volumes.

This PR adds a new class, Vcloud::Core::IndependentDisk, which handles creation and discovery of Independent Disks. It also adds a Vm#attach_independent_disks method, to attach disks to an existing Vm.

I have also had to add a 'Vapp.get_by_child_vm' discovery method to find the parent Vapp of a VM. This is due to the requirement to dependency inject the parent vApp object when constructing a Vm object - arguably this could be changed, as VM's are aware of their parent via the API. For discussion, essentially!
`name` and `href` here both make a call to the API, but there's no need for another one if you've already made one. It would be more efficient to lazy load a variable to reduce calls to the API. 

I know this is the pattern in the other classes in Core; we have an outstanding story to address that, but we might as well not add more examples. I thought it had already been moved to GitHub issues but it looks like it hasn't; I'll get on that.