Introspect indexes from the database prior to evolutions.

The naming of indexes vary between databases and versions of Django,
and can also be different if indexes were manually modified. Because of
this, we can't just guess index names.

This is the first part toward a solution. A new create_database_sig
method, and accompanying database backend methods, introspect the
database prior to evolutions to find the list of tables and their
indexes. From this, a coming change will be able to look up the correct
index, given a table and list of fields.

All the evolution-related functions require a database signature now.
These signatures are not stored, but are used throughout an evolution
as a representation of the original and then modified state of important
parts of the database.

A unit test was added to check loading signature state.