Fixed buglet in join binding, simplified types

Txs to @samuelgruetter for pointing out a small bug involving implicit conversions.

Simplified some of the types of empty, buffer, window, groupBy until to leverage Scala's top and bottom type (we could not do this in C#).