upgrader: change to module-aware engine

* Changes upgrader to load upgrades from all installed modules.

* Changes upgrade naming convention to be compatible with
  invenio modules.

* Changes upgrader to use SQLAlchemy models for querying
  instead of run_sql.

* Changes recipe creation to use module import paths as input
  instead of system paths.

* Relaxes constraint on cross-graph dependencies to allow
  inter-module dependencies.

* Removes pre-upgrade check for legacy custom templates.

* Adds tests of recipe creation.

* Fixes PEP8 issues.

Signed-off-by: Lars Holm Nielsen <lars.holm.nielsen@cern.ch>