inline more function calls

type unions get split, then call-site specialized (or inlined) separately.
multi-line inlining is now supported (currently triggered by various
simple heuristics)
add marktype!, to avoid type inferences changes during inlining (fixes

Conflicts:
	base/inference.jl
fix inlining of try/catch blocks
fix an issue where remove_redundant_temp_vars was deleting entire expressions, due to inlining generating invalid assignments