search consumers by on facts

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.
Add index to cp_consumer_facts on cp_consumer_id

This should make it faster to build a consumer object from the
database.
Use a dependant subquery for facts

I'm not sure why "exists" doesn't work as well as "in", but
in mysql the performance is worse.  This flattens the O() of
facts restricted consumer lookup runtime.
Merge pull request #539 from candlepin/ckozak/facts_search

Find consumers based on fact combinations