Rewrote interpreter to first compile source code to optimized form

Instead of executing the source code verbatim, generate an intermediate
representation with less (but more powerful) commands. The assumption
was that this would improve execution times, but alas it seems that
things like factorial.bf became about 25% slower.

However, the code looks nicer to me so let's keep this in a branch and
see whether we can optimize later.
Removed accidentally committed vim swap file
Greatly improved execution speed of compiled code

...by choosing a more appropriate data structure for the memory which has
O(1) random access.
Folded 'handle' function into 'exec

It really didn't add any extra value anymore
Got rid of lenses for Machine

Turns out pattern matching works just fine, and not relying on
template haskell makes generating profiling builds easier, too.