Implements Kahan's versions of elementary complex functions…

…paying particular attention to behavior near branch cuts.

Functions: sqrt, ^, log, asin, acos, atan, tanh, asinh, acosh, atanh
Includes also the ssqs to compute the mod-squared of a complex number scaled by a power of 2 to avoid overflow/underflow
Issues
- The ^ function fails tests so is disabled for now.
- The log function works only for `Complex{FloatingPoint}`. Explicitly casting `{T<:Integer}Complex{T}` to floating-point `Complex` causes tests to fail.

Ref: [Branch cuts for complex elementary functions](http://people.freebsd.org/~das/kahan86branch.pdf)
Correctly detects for both underflow and overflow in ssqs
Fixes type error in log
Corrects underflow check
Adds edge cases for all except atanh, atan
Reorders tests
Add Broadcast module with staged broadcast operations
Add broadcast! function. Make broadcast(f) and broadcast!(f) do function wrapping.
Provide broadcast_function separate from broadcast, make broadcast(f) = f()

Also provide separate broadcast!_function
Merge branch 'master' of github.com:JuliaLang/julia into jh/kahan-complex

Conflicts:
	base/complex.jl
Make broadcast.jl work with StridedArray arguments. Add some gensyms.
user_to_device and device_to_user convenience wrappers
Implement device_to_user(gc, x, y) and converse directly
increase default quadgk tolerance to sqrt(eps), similar to Matlab's; 100*eps is far too agressive in the case of badly-behaved integrands
Print eltype of sparse matrices when showing them.
complex function improvements; make test-complex pass
formatting fixes
Merge branch 'master' of github.com:JuliaLang/julia into jh/kahan-complex
^(x,y::Rational) should promote y to correct type relative to typeof(x) rather than always promoting to Float64
Merge pull request #3155 from stevengj/master

^(x::Number,y::Rational) should promote y to the correct type
Update build files to create a mac app bundle.
OpenBLAS is crashing with more than one thread on the mac distribution build.
Force it to use one thread for now in the mac app bundle.
Merge branch 'master' of github.com:JuliaLang/julia