ENH: add pandas.hdfstore suppport

```
In [3]: from into import *
In [4]: import pandas
In [5]: from pandas import DataFrame
In [6]: df = pandas.util.testing.makeMixedDataFrame()
In [7]: uri = 'foo.h5::data'

In [8]: into(uri,df)
Out[8]: 'foo.h5::data'

In [9]: into(uri,df)
Out[9]: 'foo.h5::data'

In [10]: into(DataFrame, uri)
Out[10]: 
   A  B     C          D
0  0  0  foo1 2009-01-01
1  1  1  foo2 2009-01-02
2  2  0  foo3 2009-01-05
3  3  1  foo4 2009-01-06
4  4  0  foo5 2009-01-07
0  0  0  foo1 2009-01-01
1  1  1  foo2 2009-01-02
2  2  0  foo3 2009-01-05
3  3  1  foo4 2009-01-06
4  4  0  foo5 2009-01-07

In [11]: into(DataFrame, uri, where='A>3')
Out[11]: 
   A  B     C          D
4  4  0  foo5 2009-01-07
4  4  0  foo5 2009-01-07

In [12]: into(DataFrame, uri, where='A>3', columns=['A','D'])
Out[12]: 
   A          D
4  4 2009-01-07
4  4 2009-01-07

In [13]: drop('foo.h5')
```

```
In [1]: data = [('Alice', 1), ('Bob', 2), ('Charlie', 3)]
In [2]: uri = 'foo.h5::/data'
In [5]: into(uri, data, dshape=dshape("3 * {id: string, amount: int64}"))
Out[5]: 'foo.h5::/data'

In [6]: into(pd.DataFrame,uri)
Out[6]: 
        id  amount
0    Alice       1
1      Bob       2
2  Charlie       3

note that you NEED the datashape here as the inferred one doesn't fully specify a DataFrame
```
- Added into support to include chunking / column selection / reading and writing

the use of uri's in resource that need a hierarchical disambiguation
based on priority and the raising of ``NotImplementedError`` by matches
that do not wish to be a resource for that particular uri

IOW. a higher-priority uri matches (e.g. .h5), but the data is
actually PyTables, so HDFStore 'passes' on the processing. PyTables
is next in the chain so it will then process.

Note that a uri can be more fully-disambiguated via a head element
The default is ``hdfstore`` (this only matters for writing), reading
is unambiguous.

e.g.

```
....../file.h5 -> hdfstore
hdfstore://....../file.hdf5|h5 -> hdfstore
pytables://....../file.hdf5|h5 -> pytables
h5py://........../file.hdf5|h5 -> h5py
```
Hrm, I can do this with h5py.  What is it doing to represent the empty array?  It seems odd to me that a format system couldn't handle the empty array.

```Python
# on master
In [1]: from into import *
import
In [2]: import numpy as np

In [3]: x = np.array([], dtype=[('a', 'i4'), ('b', 'i4')])

In [4]: dset = into('foo.hdf5::/data', x)

In [5]: dset.shape
Out[5]: (0,)

In [6]: dset.dtype
Out[6]: dtype([('a', '<i4'), ('b', '<i4')])
```