BUG: Panel.to_hdf silently fails with NaT
Just on panels, works fine for DataFrames.
Gives a `TypeError` when reading:

``` python
In [7]: df = pd.DataFrame({'A': [1, 2], 'B': pd.to_datetime(['2010-01-01', np.nan])})

In [8]: df
Out[8]:
   A                   B
0  1 2010-01-01 00:00:00
1  2                 NaT

In [10]: tst = pd.HDFStore('tst.h5')

In [12]: df.to_hdf('tst.h5', 'df')

In [13]: tst.select('df')
Out[13]:
   A                   B
0  1 2010-01-01 00:00:00
1  2                 NaT

In [14]: df2 = pd.DataFrame({'A': [1, 2], 'B': pd.to_datetime(['2010-01-01', np.nan])})

In [17]: wp = pd.Panel({'i1': df, 'i2': df2})

In [18]: wp
Out[18]:
<class 'pandas.core.panel.Panel'>
Dimensions: 2 (items) x 2 (major_axis) x 2 (minor_axis)
Items axis: i1 to i2
Major_axis axis: 0 to 1
Minor_axis axis: A to B

In [19]: wp.to_hdf(tst, key='wp')
/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.py:2310: PerformanceWarning:
your performance may suffer as PyTables will pickle object types that it cannot
map directly to c-types [inferred_type->mixed-integer,key->block0_values] [items->['i1', 'i2']]

  warnings.warn(ws, PerformanceWarning)

In [20]: tst.select('wp')
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-20-da42baeaf1c6> in <module>()
----> 1 tst.select('wp')

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.pyc in select(self, key, where, start, stop, columns, iterator, chunksize, auto_close, **kwargs)
    595
    596         return TableIterator(self, func, nrows=s.nrows, start=start, stop=stop,
--> 597                              auto_close=auto_close).get_values()
    598
    599     def select_as_coordinates(

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.pyc in get_values(self)
   1225
   1226     def get_values(self):
-> 1227         results = self.func(self.start, self.stop)
   1228         self.close()
   1229         return results

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.pyc in func(_start, _stop)
    584         def func(_start, _stop):
    585             return s.read(where=where, start=_start, stop=_stop,
--> 586                           columns=columns, **kwargs)
    587
    588         if iterator or chunksize is not None:

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.pyc in read(self, **kwargs)
   2517         for i in range(self.nblocks):
   2518             blk_items = self.read_index('block%d_items' % i)
-> 2519             values = self.read_array('block%d_values' % i)
   2520             blk = make_block(values, blk_items, items)
   2521             blocks.append(blk)

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/pandas-0.12.0_993_gda89834-py2.7-macosx-10.8-x86_64.egg/pandas/io/pytables.pyc in read_array(self, key)
   2075         import tables
   2076         node = getattr(self.group, key)
-> 2077         data = node[:]
   2078         attrs = node._v_attrs
   2079

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/tables-3.0.0-py2.7-macosx-10.8-x86_64.egg/tables/vlarray.pyc in __getitem__(self, key)
    659             start, stop, step = self._process_range(
    660                 key.start, key.stop, key.step)
--> 661             return self.read(start, stop, step)
    662         # Try with a boolean or point selection
    663         elif type(key) in (list, tuple) or isinstance(key, numpy.ndarray):

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/tables-3.0.0-py2.7-macosx-10.8-x86_64.egg/tables/vlarray.pyc in read(self, start, stop, step)
    799         atom = self.atom
    800         if not hasattr(atom, 'size'):  # it is a pseudo-atom
--> 801             outlistarr = [atom.fromarray(arr) for arr in listarr]
    802         else:
    803             # Convert the list to the right flavor

/Users/tom/Envs/pandas-dev/lib/python2.7/site-packages/tables-3.0.0-py2.7-macosx-10.8-x86_64.egg/tables/atom.pyc in fromarray(self, array)
   1149         if array.size == 0:
   1150             return None
-> 1151         return cPickle.loads(array.tostring())
   1152
   1153

TypeError: ('__new__() takes exactly one argument (2 given)', <class 'pandas.tslib.NaTType'>, ('\x00\x01\xff\xff\x00\x00\x00\x00\x00\x00',))
```

Haven't had a chance to look at what's going on.
