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":""}
-->

The lack of index error message looks like this:

```
ValueError: Field `id` must have associated a 'full' index in table `/title (Table(5,)) ''`.
```