Simplify TestCluster

TestCluster now doesn't use any reference counting anymore and
testcluster names are based on creation time to prevent confilcts if
builds hang.
Fixed the `GeoPointFieldMapper` to parse `geohashes` correctly.

Closes #3073
Add more verbose matchers / asserts to tests
Ensure all shards return compareable scores for rescore tests
Cleaning up some tests by using assertHitCount assertion
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
Fix addMapping() in AbstractSharedClusterTest for more than one field
no need for the test
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
Added `filter` support to `custom_score` query.
Closes #3167
Use XConstantScoreQuery instead of ConstantScoreQuery.

Relates to #3167
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.