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.
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
Add broadcast operations to docs, update getindex and setindex! docs slightly.

Also add broadcast.jl to test/Makefile.
pkg2: make "REQUIRE" the default argument to parse_requires.
pkg2: allow fixed version discovery handle unknown SHA1s smoothly.
pkg2: add .julia directory finding and creation.

I'm not sure that we still want .julia to always be a git repo now,
but for the time being, it's easiest to just steal code from Pkg 1.
In any case, the business of prompting users for their GitHub info
is a complete annoyance and has to go. We should probably get rid
or that in the current Pkg, but I'm loathe to change anything there.
Merge branch 'master' of github.com:JuliaLang/julia
pkg2: emit a warning when unrecognized commits are encounted.

If this is happening during normal operation, we probably want to
hear about it and investigate what's going on.
Fixes #3133 : print unexported types also
Merge pull request #3162 from tanmaykm/typetree

Fixes #3133 : print unexported types also