[XLA:GPU] Add initial support for constraints in `SymbolicTile`.
[XLA:GPU] Add initial support for constraints in `SymbolicTile`.

This will allow us to filter out invalid tile sizes when choosing how to
generate a tiled program.

Currently, support is minimal and only adds an overly restricted divisibility
constraint when a split reshape occurs.

In cases where we know how to derive a tile but do not yet know how to derive a 
correct constraint, we annotate the symbolic tile as "unsatisfiable": this
allows us to  produce a valid symbolic tile, but later allows us to avoid
deriving tiles for it.

This gives us

1. better debuggability (we can check that symbolic tile derivation logic works, and know that it fails only at adding constraints), and
2. insurance that any constructed symbolic tile can be instantiated safely or not at all, which makes attempts at codegen safe from invalid tiling choices.

As per offline discussion, we choose to have these constraints outside of
indexing maps since they will require support for more complex infrastructure
(disjunctions, and likely explicit conjunctions as well).
