text: Title: Caching value_equality_values?
  Body: **Is your feature request related to a use case or problem? Please describe.**
  
  Are we "allowed" to cache the `_value_equality_values`? If so, is there a standard way to do this?
  
  I'm in particular looking at PhasedXZGate: https://github.com/quantumlib/Cirq/blob/b28bfce0b91437cc151c0a6b6f0fc9f0f8fe5942/cirq-core/cirq/ops/phased_x_z_gate.py#L123 and computing the hash here is relatively expensive.
  
  **Describe the solution you'd like**
  I suppose decorating with `@_compat.cached_method` would be the easiest thing.
  
  **[optional] Describe alternatives/workarounds you've considered**
  
  
  **[optional] Additional context (e.g. screenshots)**
  
  
  **What is the urgency from your perspective for this issue? Is it blocking important work?**
  <!-- Please choose one and remove the others -->
  
  P1 - I need this no later than the next release (end of quarter)
  
  <!-- [optional] additional comment / context -->