Refactored EnumeratorHelper and Join

EnumeratorHelper now constructs a custom Iteratee that can verify that the
EOF comes in the right place (at the end of the list of checks)

The channel is now passed into the EventRoom in the Join request, in keeping
with the way that Concurrent.unicast is written (the Channel is created in
the application of the Iteratee, and thus needs to be passed into the
EventRoom otherwise it'll end up on the wrong thread).