Extended assembler to allow fabricated instructions

I've tried to add fabricated instructions such as "halt", "ret", "nop" and instructions with implicit operands such as "call" and "ld". I had to add quite a few more encoding into the assembler to cover these, so I also tried to make the assembler more extendable in that regard.

Let me know your thoughts on this. 
Instead of dealing with lists like this, I recommend making an Imm5 and Imm8 type instead.