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.
I thought about it, but I think as is now it is easer to consume: when a nested hit returned and one wants to extract the inner json object from the _source then the easiest way to extract it is to start from the top level field down the array field and index that has matched.

If we start from the bottom up then one needs to iterate all the way to the top parent and then start to extract the _source.