Fix all of database migration scripts and add test on downgrade in CI

I assured that the database schema (at least in PostgreSQL) upgraded or downgraded with migration scripts are completely correspond with what is defined in the Python mapped class by the following ways.

upgrade:
1. make a database and upgrade its schema to the HEAD revision by `base.metadata` directly.
2. make a database and upgrade its schema to the HEAD revision by migration scripts.
3. use **pg_dump** to create their SQL dump files.
4. use **apgdiff** to compare them. if the output is empty, it means they have no difference and the upgrade works well.

downgrade (when you can assume the upgrade scripts are complete and accurate): 
1. downgrade the database schema of which the revision is the HEAD to first revision (27e81ea4d86).
2. make a database and upgrade its schema to first revision by migration scripts.
3. use **pg_dump** to create their SQL dump files.
4. use **apgdiff** to compare them. if the output is empty, it means they have no difference and the downgrade works well.