text: Title: Improve `__pow__` for `SingleQubitCliffordGate` and `CliffordGate` class
  Body: **Is your feature request related to a use case or problem? Please describe.**
  The `__pow__` operator for `CliffordGate` is implemented only for integer powers and has complexity $\mathcal{O}(n)$ where $n$ is the exponent.
  https://github.com/quantumlib/Cirq/blob/ec84a057614396bf89459cd141a5f77b4d01ed48/cirq-core/cirq/ops/clifford_gate.py#L399-L411
  
  For  `SingleQubitCliffordGate` it's implemented for only integer powers where it falls to `CliffordGate.__pow__` and for $\pm \sqrt{}$.
  https://github.com/quantumlib/Cirq/blob/ec84a057614396bf89459cd141a5f77b4d01ed48/cirq-core/cirq/ops/clifford_gate.py#L718-L728
  
  **Describe the solution you'd like**
  For `CliffordGate.__pow__` exponentiation should be done using [binary exponentiation](https://cp-algorithms.com/algebra/binary-exp.html) to reduce the complexity ot $\mathcal{O}(\log{n})$. Support for non integer exponents is hard in the general case.
  
  For `SingleQubitCliffordGate.__pow__`. The single qubit clifford gates are a group of size 24. see. https://github.com/quantumlib/Cirq/blob/ec84a057614396bf89459cd141a5f77b4d01ed48/cirq-core/cirq/ops/clifford_gate.py#L149
  
  support for integer powers can be done in $\mathcal{O}(1)$ if we either fall to the optimized `CliffordGate.__pow__` but with `exponent%24` instead of `expnent` or cache the results in table and access `group_powers[self][exponent%24]`. For rational exponents, When the clifford operation has a sqrt. The operation becomes well defined for exponents of the form $\frac{k}{2}$ where $k \in \mathbb{Z}$.  For example $X^\frac{5}{2}$ is the same as $SqrtX^5$ and $X^\frac{-5}{2}$ which is the same as $(SqrtX^\dagger)^5$.
  
  
  **What is the urgency from your perspective for this issue? Is it blocking important work?**
  <!-- Please choose one and remove the others -->
  
  P3 - I'm not really blocked by it, it is an idea I'd like to discuss / suggestion based on principle 