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.
Replace i1mach and d1mach calls
Rename darray2.jl to darray.jl
Merge pull request #3334 from JuliaLang/jmw/rmd1mach

Replace i1mach and d1mach calls
use get_precision in psifn
syntax error for invalid operators like ..*
fixes #3348
make sizeof(String) give proper byte counts. fixes #3352
better length(RopeString). add tests for sizeof(String)
parse keyword arguments as (kw x y) instead of (= x y)

this also preserves the order of the x=y pairs in the original arg list.

this change fixes several problems, since keyword arguments are not really
assignments, and should be distinguished from x=y in other contexts such as
    (x=y) + 2
    {x=y}

fixes #3346

give an error for optional positional args not at end. fixes #3143
Merge pull request #3316 from JuliaLang/sk/mathconst

MathConst: π, e, γ, G and φ
fix rationalize test failure due to MathConst merge.
add a Sys module and start to move some system constants out of base
(also closes #3331)
deps: fix '-with-gmp' typo
fix BUILD_MACHINE on darwin, or when CC != clang

Fixes "libgmp not found or uses a different ABI (including static vs
shared)" error.