add join

This is ugly and likely inefficient.  Help.

`toolz.join` has some pretty complex `yield` stuff going on.  The work here is pretty much just writing down state explicitly to handle all of that.  It's pretty ugly and I assume that it's not any more efficient than the Pure Python solution.  Tips appreciated.