Introduce a 'Sed' monad

So monads actually are useful! Execute.hs is suddenly way more readable.

Some tests are now failing. Will fix these another time...
Suppot group expressions [again]
Reset printedLines to [] at each cycle
[Refactor] Use 'modify' in evalCommand
[Refactor] Remove superfluous deconstruction
Slight refactor of evaluateScript'
Rename 'process' to 'shouldProcess'''
Simplify evalExpression

Why isn't there already a whenM?
Support printing arbitrary text, i
Add parsing support for 'N'
Test case for N not cycling
Test case for N being called multiple times/cycle
Compiling before committing = recommended
Support 'N': copying next line into pattern
Support $, the address that matches the last line
Refactor 'remainingLines'
Make code harder to understand
Use Control.Monad.Loops's whileM, rather than NIH
Use Control.Monad.IfElse's whenM, rather than NIH