Accept 'app' label, full 'app.model' or 'model' while rebuilding
Let the user decide what keyword arguments are passed to the denormalized field (no magic involved)
Denorm function could return either an object or a PK (with test)

Without this, foreign key fields (like 'some_id') could end up
having objects instead of IDs.
Using quote_name for all field names (with test)

Some fields need this (particularly those with lower and upper case
or those that otherwise would be reserved keywords).

Along the way, connection's using 'using' was normalized to be
consistently used and passed around where it was needed.
Support for swapped models (with test)