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.
+1 for the NestedHit class and that is null when the hit is a root document.

Actually it isn't helpful at all in the case of a nested second level hit and beyond. The NestedHit should be hierarchical (from root level to child level) and include a reference to a child nested level as well so that something like this can be include in a hit response:

```json
{
...
"_nested" : {
   "field" : "parent",
   "offset" : 4,
   "_nested" : {
      "field" : "child",
      "offset : "2",
      ... // potentially another level
   }
...
}
```