Properly iterate sub items in order 3 union

In ason_check_represented_in, we use the fixed index 0 where we want to use i
from the for loop we are in when iterating an order 3 union.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Final representation check based on complement of right operand

We used to base our last-ditch representation check on the intersection of the
two operands and whether it was equal to the left operand. Now we base it on
the intersection of the left operand and the complement of the right operand,
which should be empty if the test is true. Since in this last ditch case the
right operand is always a complement, we are removing complexity and thus are
less likely to be inducing a loop.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Yet more value tests

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Handle remaining order 3 intersection cases

We hadn't handled the last few cases for intersection until now. The final
cases are all intersections of two order 3 objects of which one is a collection
and one is a complement. With great difficulty it is possible to break these
down and remove the intersection completely.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>