Fixed Null Pointer bugs (it seems): Migrated pruning code out of iterator-based methods into many smaller methods.  check and report are now independent of actual pruning process, consolidating the code and making it more readable.

FixedJoinFunction has more descriptive logging.