Added random sub aggregation colection method to all relevent test classes
Updated Aggregation Benchmark tests for collect mode

Added 'Deferred Aggregation' to the TermsAggregationSearchBenchmark and created a new benchmark for testing nested aggregations with different combinations of collect mode at each level
Tidy up following @jpountz review - added type safety, finals, exception