Find consumers based on fact combinations

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.