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.