Allow users to pass in additional kwargs to Solr and Elasticsearch backends

Fixes #674, #862
Doc formatting fix
Add narrow queries as individual subfilter to promote caching

Each narrow query will be cached individually which means more cache
reuse
Simplify mappings for elasticsearch fields.

- don't specify defaults (index:analyzed for strings, boost: 1.0)
- omit extra settings that have little or negative effects
  (term_vector:with_positions_offsets)
- only use type-specific settings (not_analyzed makes no sense for
  non-string types)

Fixes #866
Remove extra code
Solr backend: run() kwargs are passed directly to search backend

This allows customization by subclasses and also fixes #888
by ensuring that the custom field list prepared by 
`ValuesQuerySet` and `ValuesListQuerySet` is actually used.
ElasticSearch backend: run() kwargs are passed directly to search backend

This allows customization by subclasses and also fixes #888
by ensuring that the custom field list prepared by 
`ValuesQuerySet` and `ValuesListQuerySet` is actually used.
No need to store fields separately in elasticsearch

That will justlead to fields being stored once - as part of _source as
well as in separate index that would never be used by haystack (would be
used only in special cases when requesting just that field, which can
be, with minimal overhead, still just extracted from the _source as it
is).
Make sure DJANGO_CT and DJANGO_ID fields are not analyzed
Tests: skip Solr content extraction with old PySolr

Until pysolr 3.1.1 ships there's no point in running the Solr content
extraction tests because they'll fail:

https://github.com/toastdriven/pysolr/pull/104
Merge pull request #888 from acdha/888-solr-field-list-regression

Solr / ElasticSearch backends: restore run() kwargs handling

This fixes an earlier regression which did not break functionality but made `.values()` and `.values_list()` much less of an optimization than intended.

#925 will be a more comprehensive refactor but this is enough of a performance win to be worth including if a point release happens before #925 lands.
Tests: update pysolr requirement to 3.1.1

3.1.1 shipped a fix for a change in the Solr response format for the
content extraction handler
Tests: remove legacy targets

* Django 1.4 is no longer supported as per the documentation
* Travis: use Python 3.3 targets instead of 3.2
Update tutorial.rst
Ignore missing index during .clear()

404 in indices.delete can only mean that the index is there, no issue
for a delete operation

Fixes #647
Ignore 404 when removing a document from elasticsearch

Fixes #942
Add a note on elasticsearch-py versioning with regards to 1.0
Solr backend: correct usage of pysolr delete

We use HAYSTACK_ID_FIELD in other places but the value passed to
pysolr's delete() method must use the keyword argument ``id``:

https://github.com/toastdriven/pysolr/blob/v3.1.0/pysolr.py#L756

Although the value is passed to Solr an XML tag named ``<id>`` it will
always be checked against the actual ``uniqueKey`` field even if it uses
a custom name:

https://wiki.apache.org/solr/UpdateXmlMessages#A.22delete.22_documents_by_ID_and_by_Query

Closes #943
Fix typo with instantiating Distance units
Merge pull request #946 from gkaplan/spatial-docs-fix

Small docs fix for spatial search example code