Report the az based on the value in the instance table.

When attempting to find the availability zone of an instance
do so by first trying to locate the availability zone of the
host the instance is active on. If that fails then attempt
to use the value that is in the instances 'availability_zone'
key instead.

For the caching used in the availability_zones module there
was a new method added to get and reset the cache that is
useful for unit tests, since during each run of a test you
do not want to be affected by something in cache from a previous
test.

Fixes bug 1172246

Change-Id: I6f54a44cc87434120656ccc789cebcc08d434418
Fix sqlalchemy utils.

This patch affects drop_unique_constraint() on sqlite engine.
1. Fix error for tables with foreign key(s).
2. Now work with tables contains reserved words in
column names ("key" for example).

Fix bug 1195216.

Change-Id: Idc4dfa5006eee115f578b00d675cae1d6241ec69
Merge "Fix sqlalchemy utils."
Merge "Report the az based on the value in the instance table."
Merge remote-tracking branch 'm_src_repo/citrix-fixes' into build-temp