new MathConst type: make π, e, and γ instances.

This makes BigInt(2)*pi work as one would want it to. It's limited
though and doesn't try to do anything fancy or symbolic beyond that.
We could add a big function that converts integers to BigInts, and
floats and MathConsts to BigFloats.
MathConst: improve interactions with complex and imaginary values.
big: big(x) turns x into an appropriate high-precision version.
MathConst: factor constant-related stuff into its own source file.
fix #3322, parsing of |> <|
fix some more operator type problems.
for example float32(2) / complex(true,true) gave a different type than
complex(true,true) / float32(2).
add missing promotions for Int128. fixes #3324
make sure div and fld return integers. fixes #3321
print errors to stderr. fixes #3318
require square matrices in trace(). fixes #3319
allow AbstractVector in dot()
Export RTLD_NOLOAD
fix #3304

This was a bug in interprocedural type inference. To find the start of a call
cycle, I was looking for the previous frame to not belong to a call cycle,
which is of course wrong since it might belong to a *different* call cycle.
Fixed by marking each call cycle with a unique ID, and comparing.
Merge pull request #3328 from carlobaldassi/rtld_noload

Export RTLD_NOLOAD
MathConst: `@math_const` macro to setup BigFloat-based constants.
MathConst: add Catalan's constant, `eu` as alias for Euler's e.

Defining big(::MathConst) earlier allows using it various places.
Assert that the value of a MathConst converted to BigFloat is of
type BigFloat.
MathConst: add φ or `golden` for the Golden ratio -- (1+sqrt(5))/2.
saturate to 0 or -1 for large bit shift amounts. fixes #2241
Merge branch 'master' of github.com:JuliaLang/julia
add a missing JL_GC_POP
add another missing JL_GC_POP