Switch to a new OpenUnion implementation.
I ported Oleg Kiselyov's improved OpenUnion implementation here (source). The previous implementation is a nested Either
and operations take linear time, this version restores constant time injection/projection.