upgrader: add auto-generation of upgrades

* Adds auto-generation of upgrades via Alembic.

* Adds dependency on Alembic to perform database schema
  operations.

* Refactors code structure by splitting engine module into
  separate modules.

Signed-off-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>