ENH: add stack() function.

`stack` is similar to matlab's "square bracket stacking" functionality: `[A B; C D]`.

So you can write:
```python
>>> A = np.array([[1, 2, 3]])
>>> B = np.array([[2, 3, 4, 5, 6, 7]])
>>> c = np.array([8, 3, 4, 5, 6, 7])
>>> d1 = np.array([9])
>>> d2 = np.array([8, 7, 6, 5, 4])
>>> stack([[A, A],
           [B],
           [c],
           [d1, d2]])
array([[1, 2, 3, 1, 2, 3],
       [2, 3, 4, 5, 6, 7],
       [8, 3, 4, 5, 6, 7],
       [9, 8, 7, 6, 5, 4]])
```

The one thing I'm not super happy with is that 1-D arrays are treated as row vectors and I personally think of them as column vectors.

Are the doctests sufficient or should I create proper unittests?