Make By expressions only take a single argument

supercedes #533 
Is there a way to do a general `@dispatch(By, TableExpr, Grouper, DataFrame)`?