join: Don't add delimiter if only null-values are left

Looks like a nested loop that introduces polinomial complexity,
but the inner loop advances the outer loop as well.

Fixes Redmine #6552
Test if cf_null is still needed...
More attempts to remove cf_null from the code.
Purge cf_null from functions.

Fix difference and intersection implementation and testcase for
the case where list A is empty and list B is not. The difference
is then list B, not the empty list.
Purge dead code.
Add more tests for list evaluation.

Remove unnecessary null pointer checks. For lists defined as

slist => {}

items being NULL is valid, and yet the list variables should be
known.
Implement NullIterators.

If any list in an implict iteration is null or contains only null-values,
then the promise shall be skipped entirely.

Remove dead code.
Don't iterate if any list in the iterator is empty.
Revert change of semantics in set differences.
Keep cf_null in empty lists.

Otherwise, the rval's item becomes the null pointer, which violates
assumptions throughout the evaluation stack.
More test cases
Augment acceptance tests with mix of empty/non-empty lists.