[NVIDIA XLA:GPU] Fused MHA - Infrastructure + BMM-BMM fusion
@AyanmoI Can you please resolve conflicts? Thank you! > @AyanmoI Can you please resolve conflicts? Thank you!

Rebased and resolved conflicts. @AyanmoI Can you please resolve conflicts? Thank you! This will be spilt into 2 PRs, one of which is https://github.com/tensorflow/tensorflow/pull/60047. Closing this one.
cuDNN currently supports and the rewriter matches the following patterns for Multi-headed attention:

BMM1 - BMM2
BMM1 - Scale - Bias - Mask - Softmax - BMM2
BMM1 - Scale - Bias - Mask - Softmax - Dropout - BMM2
BMM1 - Scale - Mask - Softmax - BMM2
BMM1 - Scale - Mask - Softmax - Dropout - BMM2
BMM1 - Softmax - Dropout - BMM2
The following pattern is matched here:
`Output = BMM2(BMM1(Q,K), V)` 
and the infrastructure to support the other patterns