Determine order of object intersection correctly

ason_reduce_object_intersect_join outputs its own fully-reduced object, so the
final order calculation is done in a second place. The last tweak to that
calculation didn't make it in here.

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

It handles more cases now, and is cleaner. Also the cases we don't handle are
now clearly marked.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Correct sorting of values in ason_reduce_intersect

Before reducing an intersect, we rearrange it so the lower-order value is
always on the left.

At least, we should. The comparison was backwards until now.

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

We can now reduce unions to a collection of mostly-independent values very
easily. We can handle just about every case correctly, with the possible
exception of eliminating overlap from certain collections of unioned order-3
values.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Add FIXME tags to missing use cases

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