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.
If sort is used in top_hits in a nested scope then all fields within that scope are reachable, so it then doesn't matter what level a top_hits has been defined. 

If fields outside a nested scope are needed for sorting then in that case a nested path should be used. So lets a hit is on the 2nd level and field require for sorting is on the 3th level then the name of the object field mapper to the third level should be used (not the entire path from the root).