Add no-op instruction.
Add basic peephole optimizer.

This is likely to change with changes to the byte code or the code
generator. This optimizer is to tidy up some of the myopic output of a
naive (as a virtue) code generator.

This should be in addition to (not a replacement of) proper AST and
data flow analysis/optimization.
Add macros to modify instructions.
Wrap test file in function (for better disassembly).