Choice / Either monad

Attempted Choice/Either monad implementation