BUG: HDFStore.append with encoded string itemsize
Closes https://github.com/pydata/pandas/issues/11234

Failure came when the maximum length of the unencoded string
was smaller than the maximum encoded length.

Need to run a perf check still. We end up having to call `_convert_string_array` twice, once before we know the min_itemsize, and a second time just before appending once we do know the min itemsize.

So initially I had to call `_convert_string_array` twice, the second time just to change the length. But it _seems_ like we can just `astype` the converted string to the new length, which is quite a bit faster.

```
In [1]: from pandas.io.pytables import _convert_string_array

In [2]: a = np.array(10000 * ['ë́'])

In [3]: c =  _convert_string_array(a, 'utf-8')

In [4]: %timeit _convert_string_array(a, 'utf-8')
100 loops, best of 3: 5.37 ms per loop

In [5]: %timeit c.astype('|S6')
10000 loops, best of 3: 91.4 µs per loop
```

All the tests passed, but I've never worked with numpy's fixed length strings. Hopefully I'm not breaking any rules here.
 merged via https://github.com/pydata/pandas/commit/26db1729f2947d95d9a2e51878ba0f297fe24165

thanks @TomAugspurger 
