ENH: more flexible describe() + tests

this patch adds a return_type keyword argument to describe() to make it more
flexible to use on mixed-type dataframe. User can now select among returning
numeric, categorical, or both, as well as 'auto' (previous behaviour, default),
and 'same', which keep columns identical (useful, e.g. with groupby())
Yep, I figured that out in the meantime :-)
But still, the if's of `if percentile_width` and `if percentiles` can be put above that, no? In that case, for a dataframe, the conversion of percentile_width ot percentiles only has to happen once.