Redefine Alternative/MonadPlus for Iter

The definition now applies to any underlying monad, not only those
which are instances of MonadPlus themselves. The new behaviour is
not backwards compatible.
Cabbage example for MonadPlus instance of Iter
Explain MonadPlus instance of Iter
Added `unsafeIter` function, specializes `retract`