index: Factor out the SQLAlchemy Index into flexible backends

Make it easy to add alternative backends for the search endpoint.
I've added a 'search_backend' config and renamed the 'search_index' to
'search_sqlalchemy_database' to avoid colliding with other backends.

I've called the SQLAlchemy module 'db' so we can distinguish between
the global sqlalchemy package and our SQLAlchemy-based index module
without using the absolute_import future [1,2,3,4].

[1]: https://docs.python.org/2/library/__future__.html
[2]: http://legacy.python.org/dev/peps/pep-0328/
[3]: https://github.com/dotcloud/docker-registry/pull/247#discussion_r11360344
[4]: https://github.com/dotcloud/docker-registry/pull/247#issuecomment-40434561

Reported-by: Lee Trout <ltrout@newsinc.com>
index: Expand load() to handle arbitrary module names

It would be nice if users could point to their own index
implementations if a suitable backend is not supplied by
docker-registry.  This commit adds support for loading Index
implementations from arbitrary modules.

Reported-by: Lee Trout <ltrout@newsinc.com>