isl_*_list_add: do not modify lists in-place
isl_*_list_add calls isl_*_list_grow to ensure that there is room
for at least one more element and then directly modifies the
returned list. If the original list was large enough already, then
isl_*_list_grow will simply return this list, even if there
is more than one reference to the list, resulting in
isl_*_list_add also modifying the other references to the original list.
We could just add a call to isl_*_list_cow in isl_*_list_add,
but that could result in the list getting copied twices.
Instead, we make sure that isl_*_list_grow always returns
a list with a single reference.
Signed-off-by: Sven Verdoolaege <skimo@kotnet.org>