CLJS-544: named fn self reference lexical scope issue

named fns were passing along raw names instead of the name var map
which includes shadowing information. this meant that during
emission the name of the fn would not match the name that would be
emitted inside for self reference.

We now construct the name var map and set the :name field of the
fn AST appropriately.
Update to latest Google Closure library & compiler in POM
Update version strings in Google Closure release scripts
Update dependency versions in script/bootstrap

Also factor out repeated version strings as variables.

* Clojure 1.5.1
* data.json 0.2.2
* Google Closure Library 0.0-20130212-95c19e7f0f5f
* Rhino 1_7R3
Working clojure.tools.reader with passing tests
implement IReduce on more ISeq types
CLJS-545: use caching-hash in cljs.core.Symbol
fn arity warnings should be enable by default
CLJS-454: Allow nanoseconds in fractions part of instant literals

This patch mimics the clojure reader which truncates the fraction part to 9 digits (i.e. nanoseconds). This patch truncates to
milliseconds (3 digits). Note that this patch also fixes three other bugs:

* CLJS-564
* The clojure reader reads "#inst \"2003-12-10T00:00:00.4\"" as #inst "2003-12-10T00:00:00.400" but the clojurescript reader (prior to
this patch) reads the same string as #inst "2003-12-10T00:00:00.004"
* #inst tests generated bad test data
CLJS-567: Optimized ClojureScript reader by switching to a more performant StringPushbackReader. Added another reader benchmark which reads a substantially bigger datastructure.
nth should only work ISeq not on ISeqable
remove some unprincipled js* usage
analyzeable js*

js* now consistently maps onto inlining macros. js* ast nodes are now
annotated with the name of the original macro in the :js-op field
breakout protocol warning code, prep for protocol impl tracking
track protocol implementers
CLJS-571: update tools.reader to last version
remove code dup
merge