tweaks of the sum functions.

Introduce subzero, add zero, etc to enhance consistency & efficiency.
merge three sum{T}(a::AbstractArray{T) for different kinds of T into a single method
specialize of sum(x) when x is a number
minor fix of addzero(::AbstractArray)
make `sum(x::Number) = x`
Merge pull request #7013 from lindahua/dh/sum2

Tweaks of sum functions