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