Rewrite ason_reduce_union

This code is now aiming to remove more overlapping values. It no longer
special-cases null, universe, and wild.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Use ason_compare to implement check_equal

This exposes a few more bugs. Oh well.

Signed-off-by: Casey Dahlin <casey.dahlin@gmail.com>
Use ason_check_equal to reduce equality

Since check_equal no longer relies on forging and reducing a new expression,
making reduce use check_equal no longer creates a circular dependency.

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