A Extension Support
Adds support for the A (atomic) extension and a small change to instruction rendering.
A extension instructions are fairly ordinary apart from the lr instruction which is missing an operand in the middle of the instruction, requiring special attention when encoding and decoding.
Added a new boolean field mem to the Fragment class which signals that the fragment represents a memory address in the instruction. This change allows for a more robust rendering of instructions with memory addresses (LOAD, STORE, and now RV**A instructions) as these assembly fragments require parenthesis and may be appended directly to their immediate offset, if present. It seemed sensible to make the rendering system a bit more dynamic given that there are now more instructions that include memory addresses in different instruction formats. For example, the A instructions can have either 1 or 2 operands before their memory address and they do not include immediate offsets to the memory addresses which are present in the LOAD and STORE instructions.
Closes #25 (closed).