Various fixes to Table expressions

Some changes:

* ColumnWise no longer inherits from Column,  Column now really means a Projection of one column, not something shaped like a column.  we should consider a renaming
* Column-like things retain their name as part of their schema
* Compute traverses better when the expression contains multiple tables, previously this only worked when the multi-table computation was at the top of the tree.
* The `By` operation now computes the parent first and then performs other computations off of that, this reduces some computation.
* Added a `unique` function (stolen from toolz)
* SQLAlchemy compute layer now matches against the more generic `Selectable` class, rather than the `sqlalchemy.Table` class
* Joins in Pandas and SQL are now standardized and match the Blaze TableExpr's schema
* SQL column names coming out of a Join are now simpler, and match the names in the schema
* Some PEP8 fixes
* Renamed `Expr.__eq__` to `isidentical` in case we need structural equality testing on classes where `__eq__` is overloaded to produce `Eq` terms.
* Added a `subs` method to `Expr` to provide subtree swapping

* Bigger and more complex tests everywhere to expose (and test) all of these issues