[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.
Ok, sounds good.  On the performance front, we might be able to treat the negated tokens specially:

* X contains one negated token (and any number of non-negated ones) - YES if Y contains any token not matching the negated one.
* X contains two negated tokens - YES if Y is non-empty.

In these, X and Y are matchee and matcher (or vice-versa).

If none of the above is true, then all tokens are non-negated and we can do a simple "find a pair" test.