Ported 'memory' type of Machine to a list zipper

This provides constant access to the currently selected memory cell,
including O(1) updates, but it does not require IO.
Generate and use lenses for accessing Machine fields

I think the code became easy enough to to consider dropping the
readCell/writeCell/editCell helpers.
Folded readCell/writeCell/updateCell/updateCodeIdx

With the lenses at hand, these functions didn't seem to pull their own
weight anymore.