Find consumers based on fact combinations

Some key changes
* Pagination is supported for any bulk get on consumers
* Any set of restrictions may be used (ex: uuids, consumer type and owner)
* Added hypervisorId option, like collection
* Also lookup by facts

Fact based lookup should be particularly useful for virt who cases where we need to find a particular rhel system that may be registered, and give it a hypervisor Id.  For instance, RHEV uses macaddr_dmiuuid for hypervisor Ids, so we can simply split that, and search any given org for a consumer with both the dmi uuid and macaddr (searching for the mac address requires a wildcard)
```
&fact=net.interface.*.mac_address:11:11:11:11:11:11&fact=dmi.system.uuid:12345
```

This behavior mirrors that of pool lookup by attributes.
supplied keys are ANDed together, if there are multiple values
for a key, they are considered ORs.  The key is case sensitive,
however values are not.

Fact lookup supports the wildcard *.  It may be used any number
of times in the key or value.

Support colons in the value of KeyValueParameters:
Previously we used inputstr.split(":"), now we supply a maximum
of 2 so that values with colons (mac addresses for example) will
be searchable without causing exceptions.