Refactor Jump Logic
Refactor Jump Logic

The original implimentation has sane logic, but the performance is not very
good. It ends up executing multiple increment/decrements for the instruction
pointer for every jump.

This approach simplifies the jump implimentations and makes logic for that is
shared between them exist in a single place. In doing so, it replaces multiple
instruction pointer changes with a single update.

This approach is a first step towards some a performance improvement: creating
a bi-direction jump map that can avoid so that only one 'half' of a jump has to
be evaluated only once and then all future jumps can be a simple hash look-up.

For 'complicated' applications this would be a signficant improvement.

colinstein/Brainfuck,colinstein/Brainfuck