core: adjustments needed to support instance types

Three things had to be changed:
- permissions: the instance types need a bit different permissions than the
  template. Since they are not cluster dependent they don't need that
  permissions. But at the same time, they need a system level permission to
  create template.
- devices: when creating an instance type, the devices are not copied from
  a VM (since there is no base VM). Instead a blank template's devices are used
- Since the instace types are stored to vm_static but they are not cluster
  dependent, the vds_groups_vm_static had to be removed. Since from now the
  VdsGroup can be null, the guarding that it is not where it is not allowed to
  be has been moved to the code (mostly canDoAction).
- the instance type field made editable for the VM since some of the fields
  which are derived from the instance type are editable on the VM so there
  needs to be a way to detach the VM from it's instance type.

More details for the vds_groups_vm_static removal:
There are two types of commands:
- VM related ones: the vdsGroupId can never be null - added the appropriate
  guards into the code (mostly canDoAction). An exception is the
  RemoveAllVmImagesCommand which can be run also after the VM has been
  deleted
- Template related ones: The vdsGroupId can be null if the templateType is
  instance type

It has been tested using the http://gerrit.ovirt.org/#/c/21821

Change-Id: Ifaebd849061efa1637f9fa21d8584212ba0e51f2
Signed-off-by: Tomas Jelinek <tjelinek@redhat.com>