gpu.c: select_outer_tilable_band: traverse schedule tree instead of band forest
gpu.c: select_outer_tilable_band: traverse schedule tree instead of band forest

The band forest abstraction will be removed from isl, while
the schedule tree will prove to be a lot more convenient to use
in subsequent commits.

This change can result in some minor changes because what is now
encoded in a sequence used to be part of the prefix schedule and
is so no longer.

Inside isl, the schedule_separate_components option is only taken into
account during the conversion from a schedule tree to a band forest.
We therefore need to mimic the effect of the option ourselves when
moving to schedule trees.
Note that when this option is set and we are separating all the bands
in a set node, or if we are separating all the bands in a sequence
node, then it makes little sense to additionally separate
bands with different values for tile_len and/or n_parallel.
However, this separation was being performed unconditionally before
this commit, so we continue to do so now.

Signed-off-by: Sven Verdoolaege <e5350bbed4977f5eb8ae1dc6abd9ae59d21ace75@kotnet.org>

nicolasvasilache/ppcg,nicolasvasilache/ppcg,Meinersbur/ppcg,Meinersbur/ppcg