fix a race condition in process group setup, fixes #3353
also fixes the occasional "no method convert(Type{Int64},Symbol)"
fix #3361
due to an oversight re: tuple types in inference
return Any array for map on empty arrays. fixes #3349
fix #3072 and some cleanups.
MathConst special behavior: e^x = exp(x)

Based on suggestion by @stevengj:

https://github.com/JuliaLang/julia/commit/43f9731f37022792e95319ff6fea5258a0e75927#commitcomment-3399288

One problem here is that e^1 != e:

	julia> e^1 == e
	false

If you convert to float instead of calling exp, it's fine:

	julia> float(e)^1 == e
	true

This seems more like a problem with the exp function than with this
particular special behavior, but it is a bit of an issue.
show MathConsts in the form "π = 3.1415926535897..."

Suggested by @pao:

https://github.com/JuliaLang/julia/issues/3294#issuecomment-19331571

I lop off the last couple of digits of the constant since otherwise
the last digits might be rounded, making the assertion that those
are the leading digits of the number incorrect. I tried writing this
as "π ≈ 3.141592653589793" but that just didn't look as good. There
is technically still a possibility that rounding would cause this to
be wrong, but that's not the case for any of our constants.
MathConst: use an eval loop to define MathConst binary operations.
exports: update to reflect changes to mathematical constants.
oops: export im (broken in last commit), print it as "im".
WIP(multi)