Add a monad instance for Push and defunctionalize return and bind.
The monad instance require the typecompose package so that the code can
still be monad-agnostic.