NOT IN (... JOIN ... WHERE IN) fix

The InConditionReverser no checks if the inner select is a select containing just an inner join, if so, it moves everything done. This might be overly specific, but it fixes the bug, and seems to have no adverse effects.
There should be a check for the data (even if none) that comes out of the query to verify the correct execution.