Add alembic support to migrations testing

In some of OpenStack components we have alembic as migrate library.
This patch adds the opportunity to test alembic migrations in snake mode
(upgrade>downgrade>upgrade).

It was only migrate support before this.

bp: sync-models-with-migrations

Change-Id: I7c6a2465809f510ee520d0878c108c8807f359f0
Add class for checking models with db(part I)

New class SyncModelsWithMigrations includes helper methods for
checking equality models with db. It has an opportunity for testing
of columns for each table.
Checked properties:
- data type,
- nullable,
- default values,
- primary key,
- unique,
- index.

It will be used by test for checking of equality models to migrations
state.

bp: sync-models-with-migrations
Change-Id: I58e7c6a6ba9455b352ad349aa4ebc8f8364d2d5d
Add class for checking models with db(part II)

SyncModelsWithMigrations is extended by new helper methods for
checking equality models with db. Each method checks one of the
objects of table's structure:
- unique keys,
- foreign keys,
- indexes.

It will be used by test for checking of equality models to migrations
state.

bp: sync-models-with-migrations

Change-Id: I35cf4eeeea210d0ce834e68a08e1aec1b8d3b1bb
Add test for checking models with migrations

Each component of OpenStack uses models as base for service
and migrations as base for creation of database.
In fact there are a lot of differences in models with migrations.
And there is no test that could find them.

This patch adds opportunity to compare actual state of DB with models
in mysql and postgres dialects.

Will be checked:
- tables,
- columns (name, type, lenght, default, nullable),
- constraints (indexes, unique constraints and foreign keys).

Also there is an alembic support for project which use alembic repo
as base or auxiliary.
For each test it's own database will be used.
After ending all temporary databases will be removed.

bp: sync-models-with-migrations

Change-Id: I415e11864a1859cf074e4e55eb610ae8ce96e8c5
Test migrations test cases set to be oppotunistic

Now we have the way to run tests on various backends opportunistically.
All alternative ways used in migration testing test cases ridded in this
patch.

Change-Id: Ia602489736731317438257bafa38a3f2dbc0e0a2