HDFStore.put produces PerformanceWarning when used with categories with long values
#### Code Sample, a copy-pastable example if possible

Pandas 0.23.1
PyTables 3.4.4

```python
import pandas as pd
from pandas.api.types import CategoricalDtype
import numpy as np

h = pd.HDFStore('test.hd5', mode='w')

# In my environment, 800 works just fine and 801 results in the warning
df = pd.DataFrame(dict(c=['a' * 801]))

def unique_ordered(*args):
    u = [a.unique() for a in args]
    u = pd.unique(np.concatenate(u))
    u.sort()
    return u

cat_type = CategoricalDtype(categories=unique_ordered(df['c']), ordered=True)

df['c'] = df['c'].astype(cat_type)

h.put('df', df, format='table')
# /.../python3.5/site-packages/tables/leaf.py:414: PerformanceWarning: The Leaf ``/df/meta/values_block_0/meta/_i_table/values/sorted`` is exceeding the maximum recommended rowsize (104857600 bytes);
# be ready to see PyTables asking for *lots* of memory and possibly slow
# I/O.  You may want to reduce the rowsize by trimming the value of
# dimensions that are orthogonal (and preferably close) to the *main*
# dimension of this leave.  Alternatively, in case you have specified a
# very small/large chunksize, you may want to increase/decrease it.
#   PerformanceWarning)

h.get_node('/df/meta/values_block_0/meta/_i_table/values/sorted')
# IndexArray(path=/df/meta/values_block_0/meta/_i_table/values/sorted)
# atom = StringAtom(itemsize=801, shape=(), dflt=b'')
# shape = (0, 131072)
# nrows = 0
# chunksize = 1024
# slicesize = 131072
# byteorder = 'little'

h.close()
```

#### Problem description
I work with GWAS (Genome-Wide Association Study) data that often contains string columns that usually contain values with just a few characters, but sometimes they can span many hundreds. In such cases, the above warning is produced.
In this particular case, it's entirely unclear to me what `/df/meta/values_block_0/meta/_i_table/values/sorted` is supposed to store and how it could exceed row size of 100MB.
Another point that 's unclear is that the categories appear to be stored alongside with a table in a fixed string format (`StringAtom` with `itemsize`). So, if I have 999 category values that are just a few characters, and 1 value that's 10000 characters long, the whole thing would take as much space as 1000 values that are 10000 characters long. Is there a way to use VLArray for this? As far as I understand, it wouldn't allocate 10000 characters for a single character value. Also note that apparently using `format='fixed'` does indeed use `VLArray`. At least that was my impression after inspecting results of `h.get_node(...)` for each node.

#### Output of ``pd.show_versions()``

<details>

/home/p-himik/soft/anaconda3/envs/smr-heidi/lib/python3.5/site-packages/xarray/core/formatting.py:16: FutureWarning: The pandas.tslib module is deprecated and will be removed in a future version.
  from pandas.tslib import OutOfBoundsDatetime

INSTALLED VERSIONS
------------------
commit: None
python: 3.5.2.final.0
python-bits: 64
OS: Linux
OS-release: 4.15.0-23-generic
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8
LOCALE: en_US.UTF-8

pandas: 0.23.1
pytest: 3.1.0
pip: 9.0.1
setuptools: 32.1.0.post20161217
Cython: 0.25.2
numpy: 1.14.5
scipy: 1.1.0
pyarrow: None
xarray: 0.9.5
IPython: 5.1.0
sphinx: None
patsy: None
dateutil: 2.6.0
pytz: 2016.10
blosc: 1.4.4
bottleneck: None
tables: 3.4.4
numexpr: 2.6.5
feather: None
matplotlib: 2.1.1
openpyxl: 2.4.7
xlrd: 1.0.0
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: 1.2.7
pymysql: None
psycopg2: 2.7.4 (dt dec pq3 ext lo64)
jinja2: 2.8
s3fs: 0.0.8
fastparquet: 0.0.6
pandas_gbq: None
pandas_datareader: None
/home/p-himik/soft/anaconda3/envs/smr-heidi/lib/python3.5/site-packages/fastparquet/dataframe.py:7: FutureWarning: 'pandas.core' is private. Use 'pandas.Categorical'
  from pandas.core.categorical import Categorical, CategoricalDtype

</details>
