WIP: compute on HDF5 with PyTables

closes #361

leaving projections the way i've implemented them for now:

see scopatz's description of the memory layout.

* https://github.com/PyTables/PyTables/issues/233
* https://github.com/PyTables/proposal/blob/master/column-wise-pytables.rst

- [x] sort based on pytables indexes
- [x] should sort always work? e.g., pytables only allows sorting on a single indexed column whereas numpy and pandas allow multiple columns
    - [x] either let users know they need to index, instead of reading into memory or just always work

punting to pytables on `Sort` for now so it will raise if you to sort on a column that doesn't have a completely sorted index

<!---
@huboard:{"order":374.8125,"milestone_order":487,"custom_state":""}
-->

Could use a check that `isinstance(s.key, Column) and s.key.child.isidentical(s.child)`

Also, if there isn't an index what does the PyTables error look like?  Is it sufficiently clear to explain the issue and a way to correct it?