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())
Thanks for pointing that out.

Hmm.. although your snippet works well, Timedelta seems closer to a numeric type than a object one: select_dtypes() filters it with np.number; and users would like to get a min/max/mean values, not first/last. So instead, i moved it to the describe_numeric codepath. Since it's new in 0.15, i think it's ok to do so even in the "default" describe call. However, std() doesn't make a lot of sense, so an alternative would be to create another specific index for timedelta.

ie. current code behave:
```python
In [4]: df = DataFrame({'A_cat': Categorical(['foo', 'foo', 'bar'] * 8),
   ...:                 'B_obj': ['a', 'b', 'c', 'd'] * 6,
   ...:                 'C_int': np.arange(24, dtype='int64'),
   ...:                 'D_ts': tm.makeTimeSeries(24).index,
   ...:                 'E_tdelta': to_timedelta(np.arange(24)%20,"D")})

In [6]: df.describe(include="all")
Out[6]: 
       A_cat B_obj      C_int                 D_ts          E_tdelta
count     24    24  24.000000                   24                24
unique     2     4        NaN                   24               NaN
top      foo     d        NaN  2000-01-31 00:00:00               NaN
freq      16     6        NaN                    1               NaN
first    NaN   NaN        NaN  2000-01-03 00:00:00               NaN
last     NaN   NaN        NaN  2000-02-03 00:00:00               NaN
mean     NaN   NaN  11.500000                  NaN   8 days 04:00:00
std      NaN   NaN   7.071068                  NaN      5.354416e+14
min      NaN   NaN   0.000000                  NaN   0 days 00:00:00
25%      NaN   NaN   5.750000                  NaN   2 days 18:00:00
50%      NaN   NaN  11.500000                  NaN   7 days 12:00:00
75%      NaN   NaN  17.250000                  NaN  13 days 06:00:00
max      NaN   NaN  23.000000                  NaN  19 days 00:00:00

In [7]: df.describe()
Out[7]: 
           C_int          E_tdelta
count  24.000000                24
mean   11.500000   8 days 04:00:00
std     7.071068      5.354416e+14
min     0.000000   0 days 00:00:00
25%     5.750000   2 days 18:00:00
50%    11.500000   7 days 12:00:00
75%    17.250000  13 days 06:00:00
max    23.000000  19 days 00:00:00
```