Add a draft for indexes.

Some draft API specifications for custom indexes. Key points:

- Introduction of `django.db.models.indexes`
- Support for custom classes to `db_index`
- Introduction of `Meta.indexes`
- `spatial_index` would be deprecated and a corresponding chunk of code removed from gis, allowing fields to specify their own index type, via `Field.get_default_index`
Yes, FunctionalIndex on transforms and custom expressions needs to be visited later on. It might be actually somewhat straightforward to do this, you'll need to mock the query, but that might turn out to be nothing more than mocking resolve_ref(). (see https://github.com/akaariai/django/commit/04ee37a7ddfb8c554d1ea98111516a33fb22cba5, the F<->query API is actually very clean in that proposal).