Empty.union() and NonEmpty.union() implemented and passing unit tests.