expr: Classes don't evaluate on creation

Previously we used classes directly in computations, e.g.

Join(a, b, 'col')

And constructors had logic.  Now Class constructors are dumb and we
rely on functions for this logic.

join(a, b, 'col') -> Join(a, b, 'col', 'col')
use functions, not classes

Also Selection is reverted to only use predicates
expr: Selection - rename apply to table
expr: lower-case docstring functions
doc: add expression invariants
Merge pull request #398 from mrocklin/class-function

Class function