Tables Split-Apply-Combine

Building split-apply-combine operations and computational approaches.  

```Python
>>> t = TableSymbol('{name: string, amount: int, id: int}')
>>> e = By(t, t['name'], t['amount'].sum())

>>> data = [['Alice', 100, 1],
...         ['Bob', 200, 2],
...         ['Alice', 50, 3]]

>>> from blaze.compute.python import compute
>>> list(compute(e, data)) #doctest: +SKIP
[('Alice', 150), ('Bob', 200)]
```

TODO:

- [x] SQL backend
- [x] More rigorous testing (some things are kludged together now)
- [ ] Streaming `ReduceBy` Operation (will be useful for Python and PySpark backends)