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())
This is still not correct I think as I commented before. Something from `Note that on a mixed-type DataFrame object, `describe` will restrict the summary to include only numerical columns or, if none are, only categorical columns` (your sentence from above) should be included here as well.