Implemented "char", "signed char", "short int" and "long int" as 32-bit
signed integer types.
Added generalized versions of in/out intrinsics (in2/out2).

The new intrinsics allow I/O operations with arbitrary devices.
Fix: unary minus/plus operand was evaluated twice.
Fix: missing semicolon in loop tests.
Better error message for internal errors.
Complete rewrite of register allocation and temporary values.

- Simpler reg allocator that uses less stores/loads.
- Virtual stack can later allow more general temp values of different
types (64-bit/multiregister, stack-based, etc.).
- Generalized result values for rvalue expressions reduces the generated
code size by 10-15%.
Register argument for Assembler.emit() -> better type safety.
Removed Expression.getFunction(). Can now generate optimal code without.
Code for all control expressions now generated in one place.
Framework for type conversions; trivial conversions between 32-bit scalars.
Fixed warnings about unsafe operations in FunctionTypeTest.
Fix: return type for multiplicative operators was wrong.
Allowing type specific implementation of binary operators.
Type specific boolish conversions for control expressions and negation.
Using conversion to void when ignoring expression results.
Conversions for arguments, return values and initializers.
Type specific implementations of increment/decrement operators.
Added missing @override annotations.
Support for type specific implementations of unary plus/minus.
Support for type specific implementations of bitwise negation operator.