Alternate machine works with list of machines

It used to work on a single pair. This change is in preparation for
having Unions of arbitrary numbers of machines.
Switch the type of Union to use lists of languages

Also update the tests
Added a test for a single element Union
Added a test with an empty Union