Add Lucene CommonGrams/CommonGramsQuery token fiter
Both filters merged in a single "common_grams" tokenfilter.

Closes #3202
Added version support to update requests

Moved version handling from RobinEngine into VersionType. This avoids code re-use and makes it cleaner and easier to read.

Closes #3111
stabelize more tests
Terms Filter Lookup: Failure when no mappings for the terms field exists (no data indexed)
closes #3216
improve geohash_filter to use terms filter
and various other cleanups
Fix NumericTokenizer.

NumericTokenizer is a simple wrapper aroung a NumericTokenStream. However, its
implementations had a few issues: its reset() method was not idempotent,
causing exceptions if reset() was called twice (causing #3211) and it had no
attributes, meaning that the only thing it allowed to do is counting the number
of generated tokens. The reason why indexing numeric data worked is that
the mapper's parseCreateField directly generates a NumericTokenStream and
by-passes the analyzer.

This commit makes NumericTokenizer.reset idempotent and makes consuming a
NumericTokenizer behave the same way as consuming the underlying
NumericTokenStream.
Lookup Terms Filter _cache parameter not being taken into account
fixes #3219
better handling of null filters when caching them
Reduced geobulk data
only call terms lookup once and not per segment
Added Arabic/PersianNormalizationFilters from Lucene
properly set the set flag
Deleting or closing an index doesn't clean the memory properly
fixes #3232
Cleaning up nodenames

Common changes:
Lastname, Firstname -> Firstname Lastname
Name I -> Name
Title-style capitalization
Removed L-to-R characters ( <e200> )
Removed duplicates
Alphabetical order
fixing superhero test