[Reviewer: Andy] Fix up contact filtering issues

This fixes up the issues causing https://github.com/Metaswitch/sprout/issues/716 and https://github.com/Metaswitch/sprout/issues/685 - specifically, it treats unvalued parameters as having a value of "TRUE", ignores quotes, and allows per-token negation. I've also fleshed out the debug logging, though only in an ad-hoc way so I can track down issues.

I haven't added SAS logs, or done any checking to ensure that we only filter on valid tags (ones beginning "+sip." or in the set defined by the RFC).

It would be particularly good to get a review of my UT changes, to make sure our understandings of the specs agree.

Tested in UT and by bulking out the live tests - pull request there to follow.
Though possibly it's more complex than this... we want to say
 * `YES` if, for any token there is a match and for no token there is an explicit fail
 * `NO` if for any token there's an explicit fail
 * `UNKNOWN` if there's no overlap between the tokens at all

I'm least sure on the last bullet here... check the specs.