Redmine/6553: Fix implicit looping over multiple lists

Pull request for initial review of the changes to the code. Planning to add more test coverage to the acceptance test before merging.
Yep. While I got things mostly to work by completely removing all code that adds cf_null to a list (which is this above line, and the parser itself when it encounters `"foo" slist => {};`), it leaves Rval objects with `rval.item == NULL`. The evaluator is not able to deal with such Rval's, even if the type is correctly set to being a list. It's in the past been used to signal errors in variable expansion, and there's just too much code that still does so.

Given that we have to correctly parse out any list items that are explicitly defined as cf_null, we can't get entirely rid of this monstrosity anyway. There's still room for improvement though, but the problem is now fairly localised. Ideally I manage to take cf_null values out of lists before passing them out of the evaluation into the "user" code so that function and promise type implementations don't have to bother with this anymore at all...