Aggregates

Preliminary PR for feedback on aggregates + altered search objects. Since `Collection::SearchResults` was starting to get a bit unruly, broke it up and put it's functionality for query construction into a separate builder object `Orchestrate::Search`. 

The api for non-aggregate searches remains the same: `collection.search("foo").order(:bar, :desc)`

Should `Orchestrate::Search` (the builder) perform the call and pass the `CollectionResponse` to the results objects to iterate over initially?

Other thoughts?

Also It's fairly rough, not too DRY atm.