*WIP, will be rebased!* CLJS-643: make the ClojureScript compiler (more) idempotent

* private dynamic *compiler-env* vars in each of the three "compiler" namespaces
  with `with-compiler-env` macro for convenience purposes
* cljs.closure/compiled-cljs => (:cljs.closure/compiled-cljs @*compiler-env*)
* cljs.compiler/compiled-cljs => (:cljs.compiler/compiled-cljs *compiler-env*)
* Namespaces:
  * cljs.analyzer/namespaces is now an IDeref impl that delegates lookups to
    the current *compiler-env*
  * cljs.analyzer/namespaces => (:cljs.analyzer/namespaces @*compiler-env*)
* Constants:
  * eliminated analyzer/*track-constants*; now _always_ tracking constants
    (too cheap to bother with the analyzer complication), only question
    is whether we emit or not.  This is now available @
    (get-in @*compiler-env* [:opts :emit-constants])
  * cljs.analzyer/constants-table =>
    (:cljs.analyzer/constants-table *@compiler-env*)
* make cljs.analyzer/constant-counter private
* starting off with the REPL always getting a clean environment
  (maybe cljs.repl/repl should look for existing on the REPL env?)
CLJS-654: use EOF sentinel so forms-seq ends, prevent REPL infinite loop
make REPL quit instructions prettier