PIPELINING

Fetched instructions are placed in a Fetch Register. On the subsequent
cycle the contents of the FetchRegister are moved into the Decode
Register and another instruction is fetched. On the cycle after that,
the contents of the Decode Register move to the Execute Register, at
which point the instruction is executed.

This patch also includes some low impact refactoring, such as making
various functions like incPC, nextInstruction, etc. into pure functions.