ENH: stats: return namedtuple for describe output

Addresses #3665. 
Yes, I had it that way originally, but did this based on the discussion in the mailing list. This way is marginally faster at the expense of cluttering up the code.

```
In [4]: from collections import namedtuple

In [5]: def f_nothing():
    pass
   ...:

In [6]: def f_namedtuple():
   ...:     nt = namedtuple('spam', ('one', 'two', 'three'))
   ...:     pass
   ...:

In [7]: %timeit f_nothing
10000000 loops, best of 3: 54.7 ns per loop

In [8]: %timeit f_namedtuple
10000000 loops, best of 3: 63.7 ns per loop
```