Cleanup String to UTF-8 conversion

Currently we have many different places that convert String to UTF-8
bytes and back. We shouldn't maintain more code than necessary to
do this conversion and rather use Lucene's support for it.
Thread pool: rename `capacity` to `queue_size`
fixes #3161
simplify parsing code
fix shared cluster to delete templates as well per test run
fix the type of the mapping
remove the index level class support
fix the test that relies on it, just index the data for each test case
Always ceate index with mapping in test to ensure shards are available
upgrade jackson to 2.2.2, netty to 3.6.6
missing/exists filters should also work for objects
closes #3141
stabelize more tests
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