engine: Incorrect VM TimeZone handling

In case or running a VM from older engine installation it was possible
to run a VM with incorrect timezone (empty string '') which is not a
valid value (null - meaning 'use engine default' or valid time-zone key
for given OS type). This caused the regression in frontend as it tried
to select the empty string in the TimeZone lisbox editor and failed.

Added new ValidTimeZone annotation and used it to validate VmBase
on Create/Update/Import commands and also RunVmCommand so as to
prevent runnning of VMs with incorrect timezone.

Refactoring:

Required to unify TZ handling in TimeZoneType with necessary small
changes to make it portable to GWT resulting in simplified TimeZoneModel
and avoiding asynchronous patterns in VmModelBehaviorBase.

This new TimeZoneType enum contains all necessary information related
to given timezone type (currently windows or linux/java), namely:
- the list of valid time zone values
- ConfigValue and ConfigurationValue of the default timezone key
- ultimate fallback value to be used even when the default config
value is invalid (GMT+00:00)

Change-Id: Ifd36656bd4f0288e86b1cbd46d702fa68051e28b
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=988259
Signed-off-by: Martin Betak <mbetak@redhat.com>