Shelve/unshelve an instance

This adds the compute methods for shelving and unshelving.  Shelving
will power down the instance, and snapshot if not volume backed.
Unshelving will restore the instance, which may involve re-scheduling
and rebuilding it from a snapshot.

Part of bp shelve-instance

Co-Author: Dan Smith <danms@us.ibm.com> (Instance objects)
Change-Id: I908474915c5325e120a64af9b9af13fcbce1f01c
Periodic task for offloading shelved instances

Adds a periodic task which removes a shelved instance from a hypervisor
if it has been shelved > CONF.shelved_offload_time seconds.

CONF.shelved_offload_time can also be set to -1 to mean never offload,
and 0 to mean offload immediately when shelved.

Setting a >0 shelved_offload_time means that hypervisor resources will
still be in used until the periodic task offloads them.  So capacity is
not reduced, but unshelving times may be decreased.

Offloading immediately means that capacity becomes available quickly,
but may increase unshelving times if the instance is not volume backed
and its snapshot takes a long time to transfer.

DocImpact
Part of bp shelve-instance

Change-Id: I49ee53709270aa25de76d58666c250537f6a0314
Use db.flavor_ instead of db.instance_type_

We are removing instance_type as a synonym for a flavor. This fixes that
for the db.ap.

Partially implements bp flavor-instance-type-dedup

Change-Id: Id41b3b86a7af476622c70415080f4982c267a646
Merge "Shelve/unshelve an instance"
Merge "Use db.flavor_ instead of db.instance_type_"
Merge "Periodic task for offloading shelved instances"
Merge remote-tracking branch 'm_src_repo/citrix-fixes' into build-temp