Update jqconsole to enable middle click paste on linux
Merge pull request #24 from amasad/cljs_in_cljs

Update jqconsole to enable middle click paste on linux
Combine macro setting with rest of "var" data.

- Add deep-merge to core.cljs to enable merging of the macro settings
  into the namespaces/vars.
- Also, in get-expander, lookup "vars" in uses-macros and
  require-macros structure.
reader: use blind's Reader types implementation
reader: use line/column info where possible
Fixes to blind's Reader implementation.

- Fixes: add missing newline? function, use satisfies? instead of
  instance?, fix incorrect set-pos variable name in read-char
  implementation.
- Also, use the new reader convenience functions in compiler, analyzer
  and closure.

TODO: use of indexing-push-back-reader in compiler.cljs forms-seq
causes errors processing metadata when using load-file so for now it
is using string-push-back-reader.
Active line/column for reader errors during forms-seq.

Define new emit-constant for ObjMap protocol which handles some forms
of metadata during read.
compile-forms*: only eval if requested, line nums on eval errors.

Add two entry points to compile-forms*: compile-forms and
compile-and-eval-forms. The latter is used by load-file (and
:use-macros, :require-macros) to eval while loading the file (full
compilation and evaluation). The former is used by compile-file* to
compile but not evaluate the forms when doing ahead of time
compilation (i.e. the way that ClojureScript does compilation right
now via closure.clj).
run.js: check if there is a *main-cli-fn* before calling.
Add output "streams" and use them in the various REPLs.

- redefine *out* and *err* as functions that do output rather than
  raw I/O streams.
- also add *rtn* for return value output.
Add reader support for octal/unicode constants.
Partial self-hosting (all except core.cljs)

With these changes, src/cljs/cljsc.cljs (which invokes build in
closure.cljs) can compile the whole compiler except for core.cljs. The
target of the new compiler is currently set to out2 to not collide
with the compiler that was compiled by the original ClojureScript.

Here is the working test process:

    - Compile the compiler
        cd node
        rm -rf out
        cp ../src/cljs/goog.js out/
        time ../bin/cljsc ../src/cljs/cljsc.cljs > cljsc.js

    - Setup the new output directory with already compiled core.cljs:
        rm -r out2/
        mkdir -p out2/cljs
        cp out/cljs/core.js out2/cljs
        cp ../src/cljs/goog.js out2

    - Use the compiled compiler to compile the REPL:
        time ./run.js cljsc.js ../src/cljs/noderepl.cljs > noderepl.js

    - Run the new REPL:
        ./run2.js noderepl.js

Changes:

- Copy in closure lib files into (originally these came from a jar of
  the closure library).
- Pre-populate the emitted-provides with cljs.core during
  closre.cljs::build so that goog.provide doesn't complain since
  cljs.core is already defined in the compiler that is running.
- Only load-file in require if it is not already defined in
  namespaces.
- Add a new launcher (run2.js) that uses the out2/ sub-directory
  rather than out/.
read-forms function
merge upstream code from kanaka
Proper behavior when evaluating multiple forms (such as the whole file).