enhance infer-tag so that that if we return either 'boolean or 'seq,
inference works out. supporting change, simple-bool-expr? ->
simple-test-expr?, now most instances of a test on the result of `seq`
or `next` no longer needs truth tests.
implementors of IFn now get direct invoke implementations, add (vector
0) benchmark, ~2X faster under V8.
fix bug with IFn direct invoke implementation where we weren't properly
propagating needed deftype metadata on the fn form
remove IHash implementations for boolean, number and string. Put these
directly in hash fn - faster. Remove hacks for old string keyword world.
add some set benchmarks
simplify Keyword IFn implementations
perf tweak for rest
perf tweak for =, change fn* so name gets the :tag from the original
name of the fn so that self calls have the type hint.
direct IFn invoke for keywords
remove flooring from nth logic, not present in Clojure, significant perf
boost for nth
CLJS-528: Warns on any attempted extensions of protocols to base
JavaScript types
Merge https://github.com/clojure/clojurescript into CLJS-528-fix-attempt