extract out shared isl_multi_*_{take,restore}_at
This reduces the dependence on the internal representation.
In practice, the already available isl_multi_*_restore
can simply be reused as a isl_multi_*_restore_at
to pair off with isl_multi_*_take_at.
Note that the calls to isl_multi_*_cow can be removed
because it is called by isl_multi_*_restore_at when needed.
Conversely, isl_multi_*_coalesce is not converted
to used isl_multi_*_{take,restore}_at because
it should perform its modifications inplace.
Signed-off-by: Sven Verdoolaege <sven@cerebras.net>