BUG/CLN: numpy compat with pandas numeric functions and cln of same (GH4435)
related #4787 (keywords now pass thru to _reduce), default for `numeric` is still `None`

closes #4435

BUG: provide numpy compatibility with 1.7 when implicity using `__array__`, IOW:

`np.prod(s)`, or `np.mean(df,axis=1)` will now work (because numpy _decided_ to try to see if the
object has this function and then pass all kinds of keywords to it, so pandas gets the right function called
with `dtype`, and `out` passed in (currently ignored)

CLN: refactored all numeric and stat like function (sum/mean/mad/min/max) and cums (cummin/sum..)

to `core/generic.py` from Series/DataFrame/Panel

first PR with big deleted loc!
 @jtratner don't worry....going to wait for your big ops merger first! (though I don't think much will conflic)
 @jreback I know, nice to finally see something decrease the size of the codebase. Arithmetic refactor ended up about even if you exclude tests and docs changes.
