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
Merge branch 'master' of github.com:JuliaLang/julia into jh/kahan-complex

Conflicts:
	base/complex.jl
complex function improvements; make test-complex pass
formatting fixes
Merge branch 'master' of github.com:JuliaLang/julia into jh/kahan-complex
Add Julia functions based on CSparse C code
Move functions based on CSparse to base/jlsparse.jl
More efficient sizeof() for complex types

Remarkably, this was originally the main bottleneck in the
cache-friendly transpose algorithm for small complex matrices.
Cache-friendly transpose algorithm
Fix #2525
Merge pull request #3231 from staticfloat/master

Fix #2525
Improve and simplify blocksize calculation in transpose

This also yields better scaling.
Merge pull request #3219 from timholy/transposecf

Cache-friendly transpose
fix #3234, empty function with keyword arguments
copy/peek for IOBuffer and some module introspection. Close #3229
Reexport bsxfun from Base for #3218
temporary workaround for #3232
not a real fix, but hides the problem, which is better than
nothing for now.
unsupport the mingw32 compiler. closes #3241