ENH: Make fromiter() accept iterators of sequences

Tests were added.

Fixes #4791.

The example from http://mail.scipy.org/pipermail/numpy-discussion/2006-November/024747.html now works:
```
>>> from numpy import fromiter
>>> fromiter(([x, x // 2, x+5] for x in range(1000)), dtype=int)
array([[   0,    0,    5],
       [   1,    0,    6],
       [   2,    1,    7],
       ..., 
       [ 997,  498, 1002],
       [ 998,  499, 1003],
       [ 999,  499, 1004]])
>>> _.shape
(1000, 3)
```

TODO:
* [x] Go very carefully over the whole patch and make sure there are no memory leaks
* [x] Add tests for corner cases, when the sequence lengths are not all the same in the iterator (it should raise an exception)
Since iterator can be a user defined function, it can also raise an exception if the user makes a mistake (or on purpose). So these tests check that the user exception (i.e. exception raised by the user in the iterator) is properly propagated out in all circumstances.