Incorrect dtype format used for string columns when initializing Table from rows on Python 3

I noticed this while testing the doctests on Python 3, in this example:

```python
>>> data_rows = [(1, 2.0, 'x'),
...              (4, 5.0, 'y'),
...              (5, 8.2, 'z')]
>>> t = Table(rows=data_rows, names=('a', 'b', 'c'), meta={'name': 'first table'})
>>> t
array([(1, 2.0, 'x'), (4, 5.0, 'y'), (5, 8..., 'z')],
      dtype=[('a', '<i8'), ('b', '<f8'), ('c', 'S1')])
```

On Python 3 the output of this example is:
```python
array([(1, 2.0, 'x'), (4, 5.0, 'y'), (5, 8..., 'z')],
      dtype=[('a', '<i8'), ('b', '<f8'), ('c', '<U4')])
```

The difference is in the dtype of column 'c'.  The change from 'S' to 'U' is expected.  However, this should be 'U1' not 'U4'.  The result is that it's using 16 bytes per column to represent a single-character column, instead of just 4 bytes.

This is due to a bug in `np.rec.fromrecords` which we call call [here](https://github.com/astropy/astropy/blob/e573eb7cfe659697d720d1df22fcd9111f52e239/astropy/table/table.py#L181).  The bug is on this line:  https://github.com/numpy/numpy/blob/master/numpy/core/records.py#L536

It checks if the type of the objects in some column are a subtype of the `flexible` type (which the Numpy unicode type *is*).  For other `flexible` subtypes, such as `void`, the format code should include the `itemsize` for the dtype.  However, for the unicode type it should include the number of characters (i.e. `itemsize / 4`).

We can easily fix this on our end by partially reimplementing `np.rec.fromrecords`.  I will also submit an upstream patch.