Refactoring of folding functions: `foldl`, `foldr`, `mapfoldl`, and `mapfoldr`
Merge branch 'master' into dh/reduce3
test mapfoldl and mapfoldr + a bug fix to mapfoldr
move mapreduce functions above
generalize mapreduce (still need some tweaking ...)
fix a bug of mapreduce
reduce implemented based on new mapreduce
sum functions implemented based on new mapreduce
prod functions implemented based on new mapreduce
maximum/minimum functions implemented based on new mapreduce
move and/all codes above
reorganize tests for reduce
and, or, count reimplemented using new paradigm
tweak extrema
a small fix of mapreduce function signature
small fix to extrema, now it correctly handles [NaN, ....]
fix #7067, typo in process.jl (P => pc)
speed up readuntil(IOBuffer) a bit by copying while searching for delim

ref #7066
ref https://github.com/JuliaStats/DataFrames.jl/issues/609#issuecomment-43415671

This doesn't get us all the way there but every bit helps. Note that IOStream
is still a bit faster than AsyncStream+IOBuffer. The former is used for files,
the latter for pipes.
Fix tridiagonal matrix subtraction

Looks like there was just a typo causing the superdiagonals to be added rather than subtracted during tridiagonal matrix subtraction.
Merge pull request #7073 from lightcatcher/patch-1

Fix tridiagonal matrix subtraction