General cleanups for shell wrappers

- Use appropriate quoting to avoid whitespace within arguments,
  environment variables from being string-split.
- Better compatibility with baseline POSIX sh.
- Improve editor syntax highlighter compatibility.
- Readability cleanups (avoid workarounds for bugs fixed
  pre-POSIX-standardization).
Fix dissoc implementation for Records

Included tests
Support code reflection in the cljs repl.

A few changes have been made to support runtime code reflection in a
cljs repl. These include small changes to cljs.analyzer, a separation of
the server element of cljs.repl.browser into cljs.repl.server, and the
addition of two new namespaces: cljs.repl.reflect (in src/clj) and
clojure.reflect (in src/cljs).

cljs.analyzer:
- Arbitrary metadata declared on symbols will now be added to the AST.
  This supports the addition of docstrings.
- Fix a subtle bug in cljs.analyzer/analyze-file, where an uncommon
  code-path would lead to the failed coercion of an absolute-path into a
  URL. An absolute path, including a `file://` protocol, can now be
  passed into the function successfully.

cljs.repl:
- Add function to analyze source on repl-env -setup. This is used to
  support reflection on user-defined cljs source files, as well as to
  populate the cljs.analyzer/namespaces atom on repl startup.

cljs.repl.browser:
- The server element of this namespace has been factored out into
  cljs.repl.server to support other services that may require that
  functionality.

cljs.repl.server:
- Expose a simple HTTP method and predicate dispatch system to register
  handler functions for incoming requests. (Note: this system seems to
  be relatively brittle, and future change may be warranted.)

cljs.repl.reflect:
- Registers a server handler for incoming requests to "/reflect".
- Queries cljs.analyzer/namespaces for meta information relevant to a
  symbol, responding to requests with compiled javascript.
- Can use "fixed point" macroexpansion on cljs macro forms.

clojure.reflect:
- Expose a set of simple functions for querying meta information of a
  symbol, as well as macroexpanding a cljs form.
clojure.reflect fns conform to standard names

clojure.reflect/query-meta        -> clojure.reflect/meta
clojure.reflect/query-macroexpand -> clojure.reflect/macroexpand
clojure.reflect/query-doc         -> clojure.reflect/doc

Also, a macroexpand query will return a pretty printed string for human
consumption.
added IHash implementation to ChunkedSeq and ChunkedCons, fixes CLJS-348
added test for CLJS-348
Add POM/scripts for google-closure-library(-third-party) releases

These scripts are drafts, to be modified for different releases.
They currently suffer from a bug related to handling of dependencies
in the third-party JAR, see CLJS-276.
Update/improve google-closure-library release scripts; CLJS-276
record printed forms that are consistent with Clojure
Merge branch 'master' of github.com:clojure/clojurescript
CLJS-351 : replace .-length usage with alength
Update POM template to depend on fixed Google Closure Lib

The fixed version supports the Google Closure library third-party
extensions.
CLJS-354: node require util instead of sys
fix alength
ArrayChunk now uses array-reduce
CLJS-346: fix CLJ-319 regression for println when given no arguments.
CLJS-356: make cljs.reader errors conform to Clojure JVM.
Merge branch 'master', remote-tracking branch 'base/master'