Add compatibility functions for most Django database/model/app operations.

Review Request #8107 — Created April 8, 2016 and submitted — Latest diff uploaded


Django Evolution


As a precursor to adding support for newer versions of Django, this
change adds a new set of compatibility functions and imports that wrap
either deprecated or internal methods in Django, all of which have moved
or been replaced in newer versions.

Most of this is code movement, but there's a lot of it. The
django_evolution.compat module has a number of new sub-modules for
database operations, SQL generation, model/app manipulation and lookup,
and moved imports.

The various callers have been updated to call into these instead of
hard-coding access to the wrapped functions.

Along with this, I've improved the documentation for most of the
functions that have been updated.

Unit tests pass for SQLite, MySQL, and Postgres.