Cleanup mgb

The BufferJoin cascading pushed in 2.5 lets us do a massive cleanup, so we can make MGB easier to use.  Should also have performance benefits in some situations by avoiding buffering tuples internally in a spillable tuple list (the output collector is now available), which can really hurt performance when it has to spill.