Use CFS in any case if index.compound_format is set to true

Lucenes MergePolicies support a noCFSRatio. This commit introduces
support for this ratio via `index.compound_format`. This setting
can parse a boolean value or a value in the interval [0..1] that
is equivalent to the noCFSRatio. The setting `1`, `1.0` and `true`
are equivalent as well as `0`, `0.0` and `false`.

Closes #3166
Improves the way the get mapping and get warmer get their data from the master's cluster state copy.

Both apis now also support a `local` parameter, that fetches the mapping / warmer from the cluster state of the node that received the request. The `type` option in the get mapping api now also support wildcards. The warmer api now also support the `type` option.

Closes #3171
Added `filter` support to `custom_score` query.
Closes #3167
Added created flag to index related request classes.

The flag is set to true when a document is new, false when replacing an existing object.

Other minor changes:
Fixed an issue with dynamic gc deletes settings update
Added an assertThrows to ElasticsearchAssertion

Closes #3084 , Closes #3154
Use XConstantScoreQuery instead of ConstantScoreQuery.

Relates to #3167
Made get mapping rest response consistent.
Closes #3172
Forbid usage of Character.codePoint(At|Before) and Collections.sort.

Character.codePointAt and codePointBefore have two versions: one which only
accepts an offset, and one which accepts an offset and a limit. The former can
be dangerous when working with buffers of characters because if the offset
is the last char of the buffer, a char outside the buffer might be used to
compute the code point, so one should always use the version which accepts a
limit.

Collections.sort is wasteful on random-access lists: it dumps data into an
array, sorts the list and then adds elements back to the list. However, the
sorting can easily be performed in-place by using Lucene's
CollectionUtil.(merge|quick|tim)Sort.
add more verbose assertions to tests
Made not found logic easier.
Relates #3172
Allow date format to supported group of built-in patterns

Until now 'named dates' like dateOptionalTime could not be used as a group
of dates. This patch allows it to group it arbitrarily like this:

* yyyy/MM/dd HH:mm:ss||yyyy/MM/dd||dateOptionalTime
* dateOptionalTime||yyyy/MM/dd HH:mm:ss||yyyy/MM/dd
* yyyy/MM/dd HH:mm:ss||dateOptionalTime||yyyy/MM/dd
* date_time||date_time_no_millis

Closes #2132
Set a hard limit on the number of tokens we run suggestion on

PhraseSuggester can be very slow and CPU intensive if a lot of terms
are suggested. Yet, to prevent cluster instabilty and long running requests
this commit adds a hard limit of by default 10 tokens where we just return
no correction for anymore if the query is parsed into more tokens.

Closes #3164
Check if Alias Creation was acknoledge in tests.

if there is a failure during alias creation the tests don't fail with the
correct exception. This commit simplifies the debugging asserting on the ack
flag.
Fixed an error message on the terms filter
Call DISI#cost() ahead of time to prevent NPE

NotDocIdSet resets the internal DocIdSetIterator to null causing NPE
if cost is called.

Closes #3177
Use SinglePackedOrdinals over SingleArrayOrdinals to reduce the memory ordinals take for single valued fields in field data.

Closes #3185
Change default operator to "or" for "low_freq_operator" and "high_freq_operator" parameters for "common" queries

Closes #3178
Wait for Yellow state after indexing
Wait for reloctations in utility methods
Compress PagedBytesAtomicFieldData's termOrdToBytesOffset.

Using MonotonicAppendingLongBuffer instead of a GrowableWriter should help
save several bits per value, especially when the bytes to store have similar
lengths.

Closes #3186
Expose timeout for nodes_info requests in the REST interface

Closes #3191