allow inlining of more functions

multi-line inlining is now supported (currently triggered by various
simple heuristics)
fix vargs expansion logic during inlining pass when also used a local variable name
abort when trying to inline a function which assigns to a global variable in a different module, since `Mod.X=V` isn't allowed
fix an issue where a global in the inlined ast could be shadowed by a local in the enclosing ast
resolve an issue where inlining was allowed to change the order of evaluation of its arguments if the argument was pure
improve list of effect_free expressions to include immutable types
add the rest of the _pure_builtin functions (from Intrinsics) to the list
fix order-of-execution after inlining a multiline function into a function argument list
avoid inlining in any part of an internal method definition while compiling a function
fix inlining for & special-syntax in ccall
fix deprecated a[i:] syntax and a merge error where fdwatcher_reinit should
be fdwatcher_init.
more compact detection of pure builtins
make inlining heuristic more conservative
Merge pull request #3796 from JuliaLang/jn/callmore

more inlining