Alternative & MonadPlus

Potentially resolves #6.

How does this look?
I would like to find a way to keep these though, because they're obviously very useful. In `parsing`, I wrote a special combinator, but I think if we have a type class which captures laziness, we can do it.