Implement (semi-broken) global variable define

Global procedures can be defined using (define (proc args ...) body),
and variables with (define var val), but the variables don't currently
work correctly because of how they are addressed.
Make compiler return a struct instead of raw code

The compiler used to return a sequence of symbolic assembly language
instructions. Now, it instead returns a structure with lists of
variables, procedures and an entry point.
Add =, <, >, <=, >= operators for fixnums
Eval arithmetic from right to left
Refactor literal representation, tag handling

Use predefined constants for literal values' shift/tag.