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
Delegate elementwise operators to broadcast instead of overloading directly
Pull broadcast_T out of broadcast, gather with broadcast! in same dict
Improve typing for broadcasting ./ and .\, make e.g. Int ./ Int broadcasting
Add broadcasting .^
Fix make distclean

There is no distclean target defined in doc, so this previously failed
Merge pull request #3201 from toivoh/typed_broadcast

Improve result type of broadcasting ./ and .\, add broadcasting .^
doc: Use theme and extensions from JuliaDoc
improve html doc layout on mobile devices
doc/pdf: remove python module index
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