Migration 144: Fix drop index statement

When dropping an index related to a column, we need to make sure that
the `Index` object is removed the `Table` object, otherwise a subsequent
`drop_column` call to that same column will error out as it tries to
re-drop the index.

Change-Id: Ie6533b011ead1bc5dd2542041d50eb82e5654a55
BM Migrations 2 & 3: Fix drop_column statements

`drop_column` takes a string not a `Column` object.

Change-Id: I01d537f78e40a20b762439087a13e104b9d18d46
Fix migration snake-walk.

The original code was not actually running `downgrade` because it
attempt to `downgrade` to the current version.

The fix is to downgrade to the current_version - 1.

Change-Id: I69484039269a17e343404bff195a6f84af56972c
Add `post_downgrade` hook for migration tests.

This can be used by tests to assert the state of the database after a
`downgrade` has been run.

This patch also renames `_prerun_#` to `_pre_upgrade` to match.

Change-Id: Id2a100a8270835d1ef6f9908ff5b89e2b531bb3c
Migration 146: Execute delete call.

The original code constructed but did not execute the call to delete the
availability zone metadata records.

The fix is to call `execute`.

Change-Id: I3a5e2e7fd6e96b66b2073a35b55eec2002c6ae58
Merge "Migration 144: Fix drop index statement"
Merge "BM Migrations 2 & 3: Fix drop_column statements"
Merge "Fix migration snake-walk."
Merge "Add `post_downgrade` hook for migration tests."
Merge "Migration 146: Execute delete call."