Update schema_diff.py to use 'postgresql' URLs.

This gets rid of a SQLAlchemy deprecation warning when using this tool w/
PostgreSQL:

The SQLAlchemy PostgreSQL dialect has been renamed from 'postgres' to
'postgresql'. The new URL format is
postgresql[+driver]://<user>:<pass>@<host>/<dbname>

This appears to have been deprecated in the SQLAlchemy 0.6 series so I think we
are Okay to remove it now.

Change-Id: If8fdf822ba452b387e9f2f3ec7c9157e4ae932f9
Correct exception handling

Previously, it was possible for an exception to be hidden and cause other
errors for example:
    UnboundLocalError: local variable 'port' referenced before assignment
was previously occuring if e.status_code != 404

Fixes bug: 1245700

Change-Id: I27e44ffd33a73c88745de8fda8fd7c374435808a
Add notification for host operation

Add notification for the following host operations:
1) compute/api.py:set_host_enabled
2) compute/api.py:host_power_action
3) compute/api.py:set_host_maintenance

This can make sure 3rd party callers can get host status quickly.

Implements bp host-operation-notification

Change-Id: Ib4cc80e568b6028afbdd6cb86f6ac8edeed4f933
Remove duplicated test

Function test_create_instance_with_img_ref_associates_config_drive
do the same as function test_create_instance_associates_config_drive
(identical bodies with different names)

Change-Id: I3c77d9249150231831f2e7eba1ccd493867ca5c0
Move `diff_dict` to compute API

`diff_dict` is only once, in the compute API, so just move it there.

Change-Id: I3a5a56a969aa661b096587b82fd4dc3fc430995f
Add missing fields in DriverBlockDevice

Pylint reports the following, let's clean them up
["Instance of 'DriverBlockDevice' has no '_fields' member", ""]
["Instance of 'DriverBlockDevice' has no '_legacy_fields' member", ""]

Change-Id: Iaf56dc35ce5ad963a6fb50d6641b203409ca6798
Closes-Bug: #1214377
Send delete.end with latest instance state

Delete.end notifications were getting sent with a blank deleted_at
field. This meant that services listening to notifications for
instance state changes could potentially never get the instances
deleted_at value. The instance usage audit notification would be
the only source for that value.

This change returns the destroyed instance from the conductor API
and sends the delete.end notification with that state, containing
the deleted_at value which was just set.

UpgradeImpact
Closes-Bug: #1241681
Change-Id: I3481e0bada1711c3bff50f249f6a2b40a4ea6855
Merge "Add notification for host operation"
Merge "Update schema_diff.py to use 'postgresql' URLs."
Merge "Move `diff_dict` to compute API"
Merge "Add missing fields in DriverBlockDevice"
Merge "Send delete.end with latest instance state"
Merge "Correct exception handling"
Merge "Remove duplicated test"