[XLA:GPU] Create prototype class for tiling propagation using symbolic tiles.
[XLA:GPU] Create prototype class for tiling propagation using symbolic tiles.

SymbolicTileAnalysis allows computing symbolic tiles for all the instructions
in a given computation. All the symbolic tiles contained in an instance of
SymbolicTileAnalysis are parameterized by the chosen output tile (i.e. the
tile at the root instruction).

A given instruction may be tiled in several different ways in order to produce
the same output tile. In order to make sure all relevant tilings of an
instruction are captured, SymbolicTileAnalysis stores a symbolic tile for
each path from the root instruction of the computation to the relevant
instruction.

The class also allows evaluating the value of the concrete tiles for each
(instruction, path) pair once the offset, size, and stride parameters of the
output tile have been discovered.
