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())
You are already returning here, while there are still other important parts of the function below (eg the checking and processing of percentile_width and percentiles keywords). That does not seem right (and strange this does not fail in travis, or it is not tested of course)