separated unary expressions/operations from binary ones.

this includes parsing them, their AST representations,
compiling them, instructions, and object methods. the
current unary operations are 'negation', 'logical not', and
'bitwise not'.