Aggregations: Properly support top_hits aggregation in a nested and reverse_nested aggregations.

At the moment the `top_hits` aggregation fails if it is being put in a nested or reverse_nested aggregations. This PR add proper support for nested inner objects being emitted as hits in the `top_hits` aggregator. All the known fetch phase features are supported.

This PR adds fetch infrastructure to get #3022 in as well.
Since these two informations are correlated, I'm wondering if they should be return as part of a single object, eg. `NestedHit { String path; int offset; }` that would be null when the hit is on a root doc, and non-null with a non-null path and a positive offset otherwise?

I'm also wondering about how to deal with several levels of nested documents? I don't think this offset would be very user-friendly?