Repository: Qiskit/qiskit

Issue:
`Bit.index` deprecation warning doesn't mention `QuantumCircuit.find_bit`
### Environment

- **Qiskit Terra version**: 0.22
- **Python version**: 3.7
- **Operating system**: osx 11.7


### What is happening?

The deprecation warning raised from the `Bit.index` and `Bit.register` [0] tell users to inspect circuit registers to find where each given `Bit` is located, but it is not clear from the message how to do that, or that there exists a convenience method `QuantumCircuit.find_bit` [1] to automate this process.

[0] https://github.com/Qiskit/qiskit-terra/blob/c3792f9d20e5307263f513b417262e4cb467172e/qiskit/circuit/bit.py#L61
[1] https://github.com/Qiskit/qiskit-terra/blob/fca8db6b86cba106ed0449a99cd10223899b6145/qiskit/circuit/quantumcircuit.py#L1497

### How can we reproduce the issue?

```python
>>> qc = qk.QuantumCircuit(1)
>>> qc.qubits[0].index
DeprecationWarning: Back-references to from Bit instances to their containing Registers have been deprecated. Instead, inspect Registers to find their contained Bits.
```

### What should happen?

The deprecation warning should inform users that they can use `QuantumCircuit.find_bit` to cover cases where they would need `Bit.index` and `Bit.register`, and potentially include an example of how to do so.

### Any suggestions?

_No response_


Discussion:
tbh I think we need to be making it a larger priority to ensure that `Bit.index` and `Bit.register` aren't ever used in any Terra code - the deprecation warning has been in since (I think?) before I even joined, yet there's still parts of Terra that use it (I assume - there's still warning suppressions for it in the test suite, which is another thing I have a problem with!).

In the interim, it certainly doesn't hurt to give users more indication of what the correct paths are now, by adding this sort of error message.

From a technical perspective: their existence perpetuates a false model of how registers in circuits work now, and it makes it too easy to attempt to work with bits incorrectly; there's lots of extant code that assumes (in many forms, not just this) that `QuantumCircuit(*qc.qregs, *qc.cregs)` is a valid way to copy all the resources from one circuit into another.  That's going to hurt us with dynamic circuits more and more, where bits might be shared between multiple registers / not in registers at all.  The old form of "bits are owned by registers" isn't true any more, and `Bit.index` and `.register` are remnants of it.

Resolving patch:
diff --git a/qiskit/circuit/bit.py b/qiskit/circuit/bit.py
--- a/qiskit/circuit/bit.py
+++ b/qiskit/circuit/bit.py
@@ -54,14 +54,23 @@ def __init__(self, register=None, index=None):
 
     @property
     def register(self):
-        """Get bit's register."""
+        """Get the register of an old-style bit.
+
+        .. deprecated:: 0.17
+            Use :meth:`.QuantumCircuit.find_bit` instead.
+
+        In modern Qiskit Terra (version 0.17+), bits are the fundamental object and registers are
+        aliases to collections of bits.  A bit can be in many registers depending on the circuit, so
+        a single containing register is no longer a property of a bit.  It is an error to access
+        this attribute on bits that were not constructed as "owned" by a register."""
         if (self._register, self._index) == (None, None):
             raise CircuitError("Attempt to query register of a new-style Bit.")
 
         warnings.warn(
-            "Back-references to from Bit instances to their containing "
-            "Registers have been deprecated. Instead, inspect Registers "
-            "to find their contained Bits.",
+            "'Bit.register' is deprecated since Qiskit Terra 0.17 and will be removed "
+            "in a future release. Bits may be in more than one register. "
+            "Use 'QuantumCircuit.find_bit' to find all the containing registers within a circuit, "
+            "and the index of the bit within the circuit.",
             DeprecationWarning,
             stacklevel=2,
         )
@@ -70,14 +79,23 @@ def register(self):
 
     @property
     def index(self):
-        """Get bit's index."""
+        """Get the index of an old-style bit in the register that owns it.
+
+        .. deprecated:: 0.17
+            Use :meth:`.QuantumCircuit.find_bit` instead.
+
+        In modern Qiskit Terra (version 0.17+), bits are the fundamental object and registers are
+        aliases to collections of bits.  A bit can be in many registers depending on the circuit, so
+        a single containing register is no longer a property of a bit.  It is an error to access
+        this attribute on bits that were not constructed as "owned" by a register."""
         if (self._register, self._index) == (None, None):
             raise CircuitError("Attempt to query index of a new-style Bit.")
 
         warnings.warn(
-            "Back-references to from Bit instances to their containing "
-            "Registers have been deprecated. Instead, inspect Registers "
-            "to find their contained Bits.",
+            "'Bit.index' is deprecated since Qiskit Terra 0.17 and will be removed "
+            "in a future release. Bits may be in more than one register. "
+            "Use 'QuantumCircuit.find_bit' to find all the containing registers within a circuit, "
+            "and the index of the bit within the circuit.",
             DeprecationWarning,
             stacklevel=2,
         )


Test patch:
diff --git a/qiskit/test/base.py b/qiskit/test/base.py
--- a/qiskit/test/base.py
+++ b/qiskit/test/base.py
@@ -211,7 +211,7 @@ def setUpClass(cls):
             r"elementwise comparison failed.*",
             r"The jsonschema validation included in qiskit-terra.*",
             r"The DerivativeBase.parameter_expression_grad method.*",
-            r"Back-references to from Bit instances.*",
+            r"'Bit\.(register|index)' is deprecated.*",
             r"The CXDirection pass has been deprecated",
             r"The pauli_basis function with PauliTable.*",
             # Caused by internal scikit-learn scipy usage