Javascript unparser

This pull request provides a Javascript unparser, which acts as code generator in the compiler.  It is part of the new compiler I am working on, but it can run independently so I am considering to include it in the current compiler too.

(I am thinking about having two compilers, a strong with optimizations and the current one to use at run-time if the application uses eval or other function which inhibit tree-shaking).

It removes unnecesary parenthesis, whitespaces, braces, etc from the output code using operator precedence and associativity information:

```lisp
(js '(if z 1 0)) 
;; if (z) 1; else 0;

(js '(if z (progn 1 2 3) 0))
;; if (z) {1;2;3;} else 0;

(js '(* (if z 1 -1) (+ 1 3)))
;; (z?1:-1)*(1+3);
```