engine: Refactoring of VmTemplateHandler editable fields

Introducing annotations EditableOnVm and EditableOnTemplate as a
replacement for hard-coded list of field names in VmTemplateHandler,
which was error-prone and difficult to maintain.

New annotation behavior:

@EditableField:
  describes that this VmBase field will be editable for
  both VMs and VmTemplates.

@EditableOnVm:
  describes that this VmBase field will be editable for VMs.

@EditableOnTemplate:
  describes that this VmBase field will be editable for VmTemplates.

On the derived entities (VmStatic, VmTemplate) you can continue using
plain @EditableField; these annotations were just added for
disambiguation of those VmBase fields that are editable only for
template of for specific VM status and template.

Implementation:

VmHandler includes into permitted fields those annotated with
EditableField, EditableOnVm and EditableOnVmStatusField (see note).
VmTemplateHandler includes into permitted fields those annotated with
EditableField and EditableOnTemplate.

note: EditableOnVmStatus behavior remains unchanged, so if you have for
example field which is editable only when the VM status is down and for
template use the following:

@EditableOnVmStatusField
@EditableOnTemplate
private String timeZone;

Change-Id: I2bd933e14310cf8f58280448a580ed761169f777
Signed-off-by: Martin Betak <mbetak@redhat.com>