Addition of basic optimisation code. Detecting duplicate set_register calls when
not necessary and detecting commands that would produce nulls such as mov rax, 0x51

TODO: Much of the command loop (e.g. sub) relies on the second argument being a
noted integer. Commands such as sub rax, rdx will not execute correctly. Correcting
this will necessarily break some of the optimisation code inside the set_register
call and thus has not been implemented yet.
Updated README