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.
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.
Merge pull request #3316 from JuliaLang/sk/mathconst

MathConst: π, e, γ, G and φ