ENH Various ehancements to the cross_validation module

One additional explanation. I discovered that in some places `array.size` was used and in some places `len(array)`.
So I used IPython's `%timeit` to compare the two and I discovered that `len(array)` is a bit faster:
```python
In [1]: import numpy as np

In [2]: a = np.ones(100)

In [3]: b = np.ones(1000000)

In [4]: c = np.ones((10000, 10000))

In [5]: %timeit a.size
10000000 loops, best of 3: 71.9 ns per loop

In [6]: %timeit len(a)
10000000 loops, best of 3: 58.6 ns per loop

In [7]: %timeit b.size
10000000 loops, best of 3: 75.4 ns per loop

In [8]: %timeit len(b)
10000000 loops, best of 3: 61.2 ns per loop

In [9]: %timeit c.size
10000000 loops, best of 3: 75.8 ns per loop

In [10]: %timeit len(c)
10000000 loops, best of 3: 60.9 ns per loop

In [11]:
```