A few tweaks to the setup documentation and clean state.  You don't often get
to experience the from-scratch setup of your system's development environment.
I find it's a great opportunity to have them contribute right off the bat by
tidying up some of the setup documentation, or updating it as dependencies
have evolved.
Adding tests for BookAdmin and the process_data_file command.  Bringing in the
mock library to give a simple way to avoid external file dependencies in the
process_data_file and to avoid the Django admin site dependency to test
BookAdmin.

Upping the test coverage for Alias (which just needed coverage of it's
unicode()).  Made the unicodes a bit cleaner.

Changing the test_settings to cover-inclusive, which exposes modules that may
be missing test coverage entirely (because they aren't imported during the
tests).
And on to the meat of the problem.

Without a more specific definition of what the initial and update sets are,
I'm assuming that two datasets represent two partial, point-in-time snapshots
dumped from external publisher databases.  As such, I'm not assuming that the
three files represent the same three books in the same order.

The data include versions of books, and the titles imply that these are
subsequent editions of the same books, so I ran with that.

I introduced the new model, Edition, of which a logical Book may have many.  In
in interest of safety, I'm also assuming that the Aliases uniquely refer to
Editions rather than Books.

The process_data_file command now attempts to create Books and Editions
idempotently by making a fuzzy match given the aliases provided.  It assumes
that at least one identifier will remain constant across Editions, otherwise
it must create a new Book.  The fuzzy match happens in
Edition.most_likely_edition_by_aliases, where (for now), it finds an existing
edition with the most matching aliases to those provided.

Note: I chose not to address schema migration in this commit, but I would
recommend bringing in the excellent south library to manage that.  In order to
try my new version, just run the initial and update sets back-to-back on a
fresh database.