Add Alternative, MonadPlus instances
Rewrite 'for' in terms of Alternative
Add performant pure implementation
Improve performance of when, enumFromN