fix busted instance? cases
fix busted cond case in cljs.analyzer/source-path
CLJS-402: runtime obtainable compiler version number

Change build script to add compiler version information to compiler.clj
and core.cljs.

In CLJ *clojurescript-version* will be bound to a map. Provide a
CLJ function that will produce a string. In CLJS
*clojurescript-version* is bound to a string.
CLJS-659: tag compiled files with compiler version

The first line of CLJS compiled files is now a comment about the
compiler version that generated the JS file. Use this information to
determine whether files need to be recompiled.
CLJS-654: Quit repljs on ^D, don't loop on nil

Previously, entering either nil or ^D at repljs would cause the
REPL to go into an infinite loop of printing nil. Evaluating
nil will now evaluate it once and then stop to read from stdin.
^D will quit out of the REPL.
CLJS-627: Add warnings on function arity problems

This patch adds three new warning types that may be thrown when
defining a function.

:multiple-variadic-overloads : Can't have more than 1 variadic overload
:variadic-max-arity : Can't have fixed arity with more params than
variadic
:overload-arity : Can't have 2 overloads with the same arity
CLJS-657: Remove duplicated warning method
CLJS-661: (try ... (catch :default e ...) ...)
write-javascript now handles source-map case for files compiled via
cljs.compiler/compile-root. cljs.compiler/compile-root was not munging
the paths.
CLJS-662: CLJS files compiled from JARs get lost from source map

don't just return a map, call into the normal path into the real
compiler, it will determine if the file in question needs recompilation
/ reanalysis necessary for source maps.
tweak build script
CLJS-643: make the ClojureScript compiler (more) idempotent

* added cljs.env namespace, to hold any state shared among the different
  parts of the compiler (analyzer, compiler, closure)
  * added dynamic cljs.env/*compiler* to hold "compiler environment" map
* cljs.closure/compiled-cljs => (:cljs.closure/compiled-cljs @*compiler-env*)
* cljs.compiler/compiled-cljs => (:cljs.compiler/compiled-cljs *compiler-env*)
* Namespaces:
  * cljs.analyzer/namespaces => (:cljs.analyzer/namespaces @*compiler-env*)
  * cljs.analyzer/namespaces is now an IDeref impl that delegates lookups to
    the current *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
* REPLs
  * allow REPL environments to carry their own compiler environment,
    defaulting to an empty one if not found
  * the browser repl always carries a compiler environment due to its
    multi-threaded precompilation
fix bug in cljs.closure/build around constants table, deref'ing the
wrong thing
point to files found via compile-root to the version copied to the
:output-dir because of source maps
revert 2a8ab45, creates extra files
remove unused dynamic var and related dead code
all JavaScriptFiles must provide a namespace
remove needless var stuff around cljs.env/*compiler*
the compiler environment while making the compiler infrastructure more
robust also makes it more tedious. Add a cljs.env/ensure macro that is
used by the following so an environment doesn't need to be established to
do basic things, applies to:

cljs.analyzer/macroexpand-1
cljs.analyzer/analyze
cljs.analyzer/analyze-file
cljs.compiler/emit
cljs.compiler/parse-ns
cljs.compiler/compile-file*

In the case of cljs.compiler/emit, the old emit multimethod has been
renamed to emit*
optimize ensure