CLJS-855: combinatorial code generation under advanced compilation

Under advanced compilation, :static-fns is true - efficient code
generation was done naively resulting in exponential code size when
nesting function calls of unknown arity.

Now if an invoke expression involves a fn of unknown arity instead
generate locals for the arguments then invoke. Google Closure will
intelligently rewrite these kinds of redundant assignments under
advanced compilation.