[XLA:GPU] Explicit algorithm support for dot instructions
[XLA:GPU] Explicit algorithm support for dot instructions

Now we can set PrecisionConfig::algorithm instead of PrecisionConfig::operand_precision.

The old PrecisionConfig::operand_precision is also still supported.
It would be a big change to remove it or even convert it to algorithm internally (because we support many type combinations and many tests would need to be updated).

PrecisionConfig::algorithm is not yet added to StableHLO, so we can only use it if we feed an HLO to XLA directly.

Future plans:

- We would like to support it in StableHLO as well.
- There are some plans to add similar algorithm support for convolution as well.
- The code around matmul_utils.cc is a bit convoluted, so it may be cleaned up later.
- We may write better tests for the algorithm support (actually checking if the correct code runs).

FUTURE_COPYBARA_INTEGRATE_REVIEW=https://github.com/openxla/xla/pull/10011 from ROCm:ci_cusolver_fix_240227 d965fd3a817838c4b7440868afb6884ea011b078
