refactor wql not

Ticket

+commit
 

if you have specs A and B  (like A= plus:, and B=  left_plus:), you have to determine whether the "not" negates each separately or both together.

So if you have a card def "A and B", there are two possibilities of what "not" that means:

   1. not (A and B)   -- equivalent to not A or not B
   2. not A and not B -- equivalent to not (A or B)

#2 is what we have, #1 is what I think we want.  If we do it that way, we can easily fix the current query to work.  It would mean changing
 
   not: { A , B }

to be

   not:  or: {A,B}

Lewis, would that make implementing "not" very generic?  Conceptually we'd just have to say "id not in (subselect)"...