Union is an open sum of functors
A value of type Union r a is a value f a for some f that is a member of the r list
Since direct construction is not safe you have to use inj to create a value.
Smart constructor for Union. Injects the functor into any union
of which the said functor is a member. Please note that only the
type constructor need be a Typeable.