super lensification with Ed Kmett.
some real progress towards getting L1 and L2 interpreters working under the new lens system
closer to finishing the lens versions of L1/L2 interpreters, but still need to handle fail/halt somehow.
Progress on L1/L2 interpreter lensification.

fixed a bug that cause the computer to halt immediately :)
fixed up L1 to properly handle fail/halt by adding in a runErrorT
fixed very minor bug - giving a good error message when you provide a wrong input file.
lensification of L1/L2 interpreters complete! all L1/L2 tests passing

Additionally 4139/4146 total (7 L3/L4 tests still failing).
working towards notions of stdout and stderr.
making progress on an actual computational model with running/halted states.
replaced all monad fail calls with new exception handling mechanism that turns things into Halt objects
refactored things to use MonadError, really cleaning up the type sigs, and introduced a MonadComputer type alias.
added Functor m to MonadComputer type alias, so it could be removed from a bunch of other places.
refactored runComputer so that it fetches the next instruction automatically, so clients dont have to. this cleaned up a bunch of stuff.
added bind2 and refactored stuff to use it. much shortness.
happy little refactoring :) introduced bifunctor.
added applicative instance for OutputT, and some light reformatting
small refactorings, and using lens operators. fun :)
tiny