Alternative & MonadPlus

Potentially resolves #6.

How does this look?
Finally!