BITWISE OPERATIONS

AND, EOR and ORR instructions implemented
Start refactoring and status flag work

Starting to move arithmetic and logical operation related code into a
new ALU module and to make all ALU ops pure functions from instructions,
register files and status registers to register files and status registers.

Trying to fix status flag updates so that the V and C flags are set
correctly by operations. This seems to be going well (no issues found so
far at least, with the latest implementation) and work is now at the
point of trying to factor as much logic as possible into higher order
functions.

Shifter operations currently work but need additional attention, since
semantics are not quite right and they are supposed to cause status flag
updates as well.

Code is currently still working as of this commit but a lot of the ALU
is not wired up to be called from anywhere, and there is a significant
amount of duplicated logic between CPU.hs and ALU.hs in the mean time
as very little code has been deleted from CPU.hs yet.