Support custom analysers, add es.create_models

To support custom analysers, it seems best to abandon model.create_all
in favour of an index-wide method (es.create_models) that sets all
mappings (and custom analysis settings) at once.

Code is largely transplanted from https://github.com/hypothesis/h/pull/1825

Details:
Custom analysers(&filters&tokenisers) are shared in Elasticsearch among
all document types (models). To update a model's mappings one needs to
make sure the custom analysers are defined first, but updating those
just for one model is inelegant; The index would have to be closed for
each update, and one cannot check for duplicate definitions of analysers
as it is not visible which model defined a particular analyser. Treating
index-wide settings as per-model settings creates leaky abstractions.
Move Model.drop_all -> es.drop_all

The function deletes the whole index, not just one type of documents, so
this makes much more sense.
Test for index existence before creation

Note that also when the index is an alias index_exists will be true.
Take analysis settings out of models

The approach where each model can define custom analysers did not match
Elasticsearch's structure well, and created more complexity than it was
worth.
Rename create_models -> create_all
Update changelog