Add support for drilldown search parameters

I'm not sure how all this fits in with the fact that we've got our own fork, so take this as a general comment rather than a "concrete" suggestion...

This class is pretty big, and seems to be doing a few different things (although all related to building queries), e.g. facets, criteria, drill down) - is there any possibility of splitting this in to a few more specific classes?