make union API consistent with other operators

union now takes the subsets that are subsets of the states of the left
and right subautomaton, respectively. It returns the new automaton along
with a mapping from the old states to the new states for each subset.

use simple_union for the same functionality of the previous version of
union.