Might as well start people out with a strong hash function
Add south support to the app

Django database management isn't great (syncdb... nuke db... syncdb
...). South is better.
Add initial migration for storage module
Add version information to book model
Wrap book update/creation in a transaction

There are a few different failure points (in particular, a book could be
created, then aliases, then fail to save with a name).

It seems like a better idea to abort the entire transaction in that case
When updating, update aliases instead of creating new ones

Also adds a simple update test
Update aliases model to allow duplicate values

Previously the constraint specified forces all values to be unique
across all schemes. However, that may not always be the case. Especially
if the data is being provided by different sources.

Given the state of the example update data (and how dirty it is) the
constraint was updated so that all values must be unique with respect to
their schemes.

So the flowing would load (where it wouldn't before):

<aliases>
 <alias scheme="company1_internal_id" value="1000000002"/>
 <alias scheme="company2_internal_id" value="1000000002"/>
<aliases>
Add support for lookup by id and attribute values
Don't die if we match multiple books, just log it