Added software interrupts and extension opcodes

The software interrupt instruction `int` provides a mechanism to
interact with an operating system without hacky mechanics. It does
not necessarily require special decoding as the interrupt normally
disrupts the flow of the processor.

The extension opcode is a normally undefined opcode that allows
application specific instructions to be defined in the lower bits of
the instruction. This opcode should only be used for processor specific
operations, and should not be used by portable applications. This
adds flexibility to the instruction set and provides a method for
prototyping new instructions.
Merge branch 'c16' into c16x
Renamed the swi instruction and explained instruction extensions

Swi always seemed like a better mnemonic since int could be
confused with the datatype.
Fixed the instruction encoding for arithmetic instructions
Merge branch 'c16' of https://github.com/CS350C-Fall-2014/instruction-set into c16x

Conflicts:
	instructions.txt
Reverted to original type names
Changed swi to specify destination register for return address

Storing the return address is all that is needed to implement
software based interrupts. The actual swi does not need to be
stored and can actually be accessed like so:

inthandler:
    ld r0,r5-$1
    ; r0 now contains the swi instruction
Merge pull request #7 from CS350C-Fall-2014/c16x

Adding processor specific extensions