whitespaces
javascript: smarter compilation of conditionals
javascript: remove redundant var decls
javascript: added cases to optimizer
javascript: inline constants in EVAL
javascript: inline apply calls
CodegenC: support arbitrary bytes in string literals.
Exclude \DEL from C-string literal characters.
Add a regression test.
Delimit escape codes properly.
javascript: temporary workaround to fix some issues with chars
Merge pull request #784 from ziman/c-strings

CodegenC: support arbitrary bytes in strings
Merge pull request #785 from raichoo/javascript

Javascript
Type constructor arguments are unused at run-time

They were being marked as "direct uses", which is wrong, because type
constructors do not get compiled, so that usage information was
propagating and leaving irrelevant arguments in the code...
Performance/compiler temporary hack: %erase

This is a (temporary!) annotation for erasing implicit constructor
arguments which are not forceable, and would otherwise remain in
compiled code. e.g.:

  data Binary : (width : Nat) -> (value : Nat) -> Type where
         zero : Binary Z Z
         num  : %erase bit, v
                Binary w v -> Bit bit -> Binary (S w) (bit + 2 * v)

This would erase 'bit' and 'v' from the num constructor (w is already
forceable). If bit or v is required for any reason, compilation will
fail.

This is a TEMPORARY HACK (no, honestly, it is) until we have more
general erasure of implicit arguments (which is coming) but this is a
placeholder which is required for some existing examples. Use at your
own risk!

Note that any code which abuses this will fail to compile, so it is at
least sound...
Remove incorrect case from unused argument trace
Fix typo that led to unification bug

(As caught by the whitespace implementation, which is definitely pulling
its weight ;))
Foreign pointer equality

Can be useful when dealing with values originating in foreign functions.
Intended in particular for checking sending VM in message passing
concurrency.