Multiple mappings per index

Can define different mappings per index, which use the index_name as
the lookup key.

This is so you can add additional properties in other indexes.

Also refactored the tests to make them easier to read
remove solr backend
Remove unused recommended_format argument

it was used by the solr wrapper and included for api compatibility, but
it is no longer needed.
Make documents aware of their index

the main motivation for this is to allow documents to know which fields
are supported by their index, so that serialization and field validation
can be done properly.

In app.rb, rather than calling Document.from_hash directly, the document
is requested from the backend (which knows its index).

The ElasticsearchIndexingTest has been changed slightly to allow
stubbing the mappings configuration. This has become necessary now that
the a Document will only accept the assignment of field values which are
supported by its index.