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())
I suspect this does not work with ``Timedelta``, but easy to fix, do something like:

```
if com.needs_i8_conversion(data):
    boxer = com.i8_boxer(data)
    asint = data.dropna().asi8

    names = ......
```

then just user ``boxer`` rather than ``lib.Timestamp``