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())
ok, complied;
(but FYI, i'm actually working on a 32-bit system, and nothing is failing here (since type of input and output are similar, and i avoided explicitely-sized dtypes in the tests). If you think something should have failed on my 32-bit, please be more explicit so a test can be added.)