text: Title: `cirq.decompose_once` fails when called on `cirq.CZ`
  Body: Calling `cirq.decomponse_once` on `cirq.CZ` raises an error:
  ```python
  In [4]: cirq.decompose(cirq.CZ(cirq.q(0), cirq.q(1)))
  Out[4]: [cirq.CZ(cirq.LineQubit(0), cirq.LineQubit(1))]
  
  In [5]: cirq.decompose_once(cirq.CZ(cirq.q(0), cirq.q(1)))
  ---------------------------------------------------------------------------
  TypeError                                 Traceback (most recent call last)
  Cell In[5], line 1
  ----> 1 cirq.decompose_once(cirq.CZ(cirq.q(0), cirq.q(1)))
  
  File ~/.virtualenvs/pyle/lib/python3.11/site-packages/cirq/protocols/decompose_protocol.py:388, in decompose_once(val, default, flatten, context, *args, **kwargs)
      383 if method is None:
      384     raise TypeError(
      385         f"object of type '{type(val)}' has no _decompose_with_context_ or "
      386         f"_decompose_ method."
      387     )
  --> 388 raise TypeError(
      389     f"object of type {type(val)} does have a _decompose_ method, "
      390     "but it returned NotImplemented or None."
      391 )
  
  TypeError: object of type <class 'cirq.ops.gate_operation.GateOperation'> does have a _decompose_ method, but it returned NotImplemented or None.
  ```
  