Now using the Either Monad, and other refactorings

Functions that return Either now use the Either Monad, all the code for the
interactive command has been refactored, parseDependencies now does pattern
matching in its arguments list instead of using a case statment, and random
other sundry changes.
Ported to Data.Text