CLJ-1098: Implement IKVReduce and CollFold for nil

+ added tests

Signed-off-by: Rich Hickey <richhickey@gmail.com>
binary compatibility notes
[maven-release-plugin] prepare release clojure-1.5.0-RC3
[maven-release-plugin] prepare for next development iteration
impose once semantics on fabricated closures for e.g. loops
[maven-release-plugin] prepare release clojure-1.5.0-RC4
[maven-release-plugin] prepare for next development iteration
Restore {:as x} destructuring for empty lists [CLJ-1140]

Signed-off-by: Rich Hickey <richhickey@gmail.com>
split off arbitrary eval parts of #= and flip default for *read-eval* to false.  N.B. this does not disable #=, only arbitrary eval using #=.
Make some PersistentVector's and APersistentVector.SubVector's internals public

This commit makes public the following items:

 * PersistentVector.Node,
 * PersistentVector.Node binary ctor,
 * PersistentVector.Node's edit and array fields,
 * PersistentVector.EMPTY_NODE,
 * PersistentVector's shift, root and tail fields,
 * APersistentVector.SubVector's v, start and end fields.

Signed-off-by: Rich Hickey <richhickey@gmail.com>
[maven-release-plugin] prepare release clojure-1.5.0-RC5
[maven-release-plugin] prepare for next development iteration
use non-loading classForName
Merge branch 'master' of github.com:clojure/clojure
[maven-release-plugin] prepare release clojure-1.5.0-RC6
[maven-release-plugin] prepare for next development iteration
read-eval is true during load
doc enhancements to read, read-string
doc *read-whitelist*
added safe-read, safe-read-string
allow only find-ns
*read-eval* false back to kill switch for all #=
non-record use of record read syntax requires *read-eval* == true
whitelist mode of read-eval is now :default, (precisely) true turns everything on, logical false everything off
read-string returns nil when string is nil or empty
Merge branch 'master' of github.com:clojure/clojure
[maven-release-plugin] prepare release clojure-1.5.0-beta7