Partitions

Does a few things

1.  Sets up an abstraction around "partitionables"
2.  Hooks in an h5py backend to this, using the chunk/split expression system

### Example with H5Py out of core


```Python
# set up dataset
import h5py

f = h5py.File('myfile.hdf5')
d = f.create_dataset('/x', shape=(10000, 10000), dtype=[('x', 'i4'), ('y', 'i4')], chunks=(1000, 1000))
d['x'] = 1
d['y'] = 2

# Wrap with Blaze
from blaze import *
a = Data(d)

# Compute with chunks
>>> into(np.ndarray, (a.x + a.y).sum(axis=1))
array([ 30000.,  30000.,  30000., ...,  30000.,  30000.,  30000.])
```