Fielddata: goodbye comparators.

This commit removes custom comparators in favor of the ones that are in Lucene.

The major change is for nested documents: instead of having a comparator wrapper
that deals with nested documents, this is done at the fielddata level by having
a selector that returns the value to use for comparison.

Sorting with custom missing string values might be slower since it is using
TermValComparator since Lucene's TermOrdValComparator only supports sorting
missing values first or last. But other than this particular case, this change
will allow us to benefit from improvements on comparators from the Lucene side.

Close #5980
just looking at this one again, we (lucene) have a little trap in that things are setup to use fieldcache in the 4.x branch unless docvalues are present. This is fixed in trunk totally, but for now, maybe we should have something in the tests that asserts we are never accidentally using fieldcache? just a check in tearDown() that asserts FieldCache.getCacheEntries().length == 0 or something? Or maybe we already have this?