asm-llvm: type check binary operations; fix negative literals.

There are special typing rules for chains of addition/subtraction,
for negation of a literal, and for multiplication by a literal.
Start filling a directory with asm.js test cases.
asm-llvm: mostly complete statement type-checking.

Still missing: switch statements, MemberExpression, CallExpression, and
AssignmentExpression.
asm-llvm: parse/check SwitchStatement; statement parsing cleanups.
asm-llvm: Documentation improvements.