improve inlining of vararg functions (avoid allocating rest tuple)
limit argument type tuple length less aggressively, by trying to determine
  if it is actually growing due to recursion
Merge branch 'master' of github.com:JuliaLang/julia into jb/vararginline
eliminate some spurious method matches during type inference. fixes #4374

these occurred when a method matched, but the intersection was actually
already covered completely by prior (more specific) matches. the relevant
case here was methods(+,(Int,Int...)), which matches (Int,Int) and
(Number,Number), with the second one obviously redundant. the tricky part
is that the (Int,Int) match does not fully cover (Int,Int...), which
is what causes us to look for more matches.

this change cooperates with the prior improvements to inlining of vararg
functions to remove all overhead from + with any number of arguments.
Merge branch 'master' of github.com:JuliaLang/julia into jb/vararginline
Merge branch 'master' of github.com:JuliaLang/julia into jb/vararginline
disable one of my changes that turns out not to be necessary to fix #4374,
erring on the side of caution
fix a suboptimality in the t-function for apply_type (involving tuple types)