CLJS-491: avoid layered subvecs

cljs.core/build-subvec now checks whether its vector argument is
already a Subvec and, if so, unwraps it, so that the return value of
cljs.core/subvec is always a view on a regular vector. This is in line
with the behaviour of subvec in Clojure.

Includes a basic test.
CLJS-492: avoid producing unnecessary calls to next in emit-apply-to

Includes two new entries in benchmark_runner.cljs.
CLJS-493: get should accept any type

This patch introduces a default case for ILookup as per discussion on
the ticket. Tests are introduced for both direct and higher-order
calls.