Join

A new and improved implementation of groupJoin, innerJoin and outerJoin to replace the one in the PR I just closed.