Fix issue effecting assignment expressions
Assignment expressions were emitting the left-hand side first, followed by the right-hand side, which (as everyone knows) is the Wrong Thing. This resulted in the top of the stack being stored in a variable before the value in the assignment statement was on the stack, resulting "pop on empty stack" errors when the stack is empty, and the wrong value being stored when something was on the stack.

Correct bytecode is now generated for lab4-samples/if5.decaf; meaning that the if-statement chain is now finished.
Add documentation to methods in Jasmin backend
Add passed bytecode for the working while loop samples
Fix empty return statement issue (implements while4.decaf)
Returns with EmptyExprs generate the same bytecode as bare returns. Sometimes the parser generates ReturnStmt(Some(EmptyExpr)) rather than ReturnStmt(None) for bare return statements, but they're functionally identical.
Add output for samples op5, op6, op7, and op8.
Samples op9 and op10 contain invalid syntax and will be skipped. Op11 contains unimplemented syntax. When op11 is complete, oeprators will be complete.
Implement unary-negation operator (Closes #58)
Merge pull request #60 from hawkw/codegen

Merge code gen changes