[WIP] Refactor Expr

Pulling functionality off of classes.  Inventing a datashape based method resolution system.

This is bad because it's very custom.  However I think that this will be useful in two fundamental ways

1.  This specializes the API according to the datashape, narrowing choices
2.  This removes substantial barriers to Array/Table/Expr interoperation, opening doors for future expansion of the expr interface

If I get adventurous, I may just kill TableExpr and move everything to Expr in this PR.   That should enable the slow merger of array operations piece by piece.