WIP: Aggregates

I still need to add tests, so this code isn't quite ready to merge, but all the functionality should be there...
I like the builder stuff! I was thinking the Builder would be standalone though (easier to test, can extend without modifying CollectionSearchResource, etc). Something like:
```java
client.searchCollection("someCollection")
         .aggregate(Aggregates.stats("value.cart.items.price"))
```
And still allow an aggregate(String) for cases where users just prefer to pass the raw String.