macros for turning off bounds checks. fixes #1392

`@inbounds expr` allows bounds checks to be omitted for code syntactically
inside the argument expression.

adds @inbounds to matmul, comprehensions, and vectorized binary operators.
Merge branch 'master' of github.com:JuliaLang/julia into jb/inbounds
Merge branch 'master' of github.com:JuliaLang/julia into jb/inbounds
clarify boundscheck expressions
add a Sys module and start to move some system constants out of base
(also closes #3331)
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".
Merge pull request #3358 from JuliaLang/jn/sysinfo

add a Sys module and start to move some system constants out of base
Make insert! return the same as push!
use 'catalan' for Catalan's constant; this constant is too rarely used to assign 'G' to it
e^x should only be defined for scalar x; element-wise exponentiation should require .^
Merge pull request #3371 from stevengj/e_pow

e^x should only be defined for scalar x; element-wise exp should require e.^
parameterize HOSTCC, for use on machines like Centos5 which apparently don't have gcc