Enforce sqlite-specific flow in drop_unique_constraint

The nova.db.sqlalchemy.apy.drop_unique_constraint method has a
sqlite-specific flow for dropping unique constraints because it can't
use alter table like mysql or postgresql. The code is explicitly
checking if the db engine is mysql or postgresql and then falls into a
block which assumes the backing db is sqlite. This can cause problems if
the backing db is not sqlite.

This patch simply switches the checks so that the sqlite-specific flow
is only ran if the backing db is sqlite, everything else will default to
the 'alter table' flow.

Change-Id: I23b9bf33d18df3ac36106d5800a8ecdd1a4018df
Don't deallocate network if destroy time out

Fixes bug #1169057
Sames as bug 1180178, if libvirt returns time out error during destroy
an instance, we also can't deallocate the network of the instance,
otherwise the fixed ip of it may be re-used by another new instance,
and resulted in the new instance can't be accessed by the fixed ip.

Change-Id: I04dfd21bb1b7168abc71f39e836126a11dad6d8d
Port scheduler hints extension to v3 API Part 2

Ports the scheduler hints extensions and the corresponding
unittests to the v3 framework. Moves the commented out tests from
the v3 version of test_servers to the config drive extension
unittests.

Partially implements blueprint nova-v3-api

Change-Id: If0164e3e80927662ec3b955df4642f03b2d18853
Merge "Port scheduler hints extension to v3 API Part 2"
Merge "Enforce sqlite-specific flow in drop_unique_constraint"
Merge "Don't deallocate network if destroy time out"