Convert parseLocals() from Q[Ptr]List to std::list.
Note that since ExprValue represents a whole tree, we do not make the list
value-based, but rather keep it as a list of pointers in order to avoid
that whole expression trees need to be copied.
We could have changed the functions parseLocals() so that they return the
result in the return value. But since we keep pointers to ExprValue
objects, we define that the owner of the objects is the caller (even if
there were parse errors). To stress the responsibility of the caller to
free the items, we keep the call-by-reference style.