[WIP] Non-reducing split-apply-combine

Grouping operations where the application function applied to each group is not necessarily a reduction.  This is not widely supported but may be interesting in some backends, notably Python, Pandas, Spark.

This is analogous to pandas'

    df.groupby(...).apply(lambda df: new_df)

See discussion on https://github.com/ContinuumIO/blaze/issues/438

I'd also like to hook up the dplyr `transform/mutate` functions to this.  I think that'd be a swell API.