Implement reference_internal with a keep_alive

reference_internal requires an `instance` field to track the returned
reference's parent, but that's just a duplication of what
keep_alive<0,1> does, so use a keep alive to do this to eliminate the
duplication.
diff --git a/docs/advanced.rst b/docs/advanced.rst
index 4fd1d41..6f57d0b 100644
--- a/docs/advanced.rst
+++ b/docs/advanced.rst
@@ -612,17 +612,11 @@
 |                                                  | it is no longer used. Warning: undefined behavior will ensue when the C++  |
 |                                                  | side deletes an object that is still referenced and used by Python.        |
 +--------------------------------------------------+----------------------------------------------------------------------------+
-| :enum:`return_value_policy::reference_internal`  | This policy only applies to methods and properties. It references the      |
-|                                                  | object without taking ownership similar to the above                       |
-|                                                  | :enum:`return_value_policy::reference` policy. In contrast to that policy, |
-|                                                  | the function or property's implicit ``this`` argument (called the *parent*)|
-|                                                  | is considered to be the the owner of the return value (the *child*).       |
-|                                                  | pybind11 then couples the lifetime of the parent to the child via a        |
-|                                                  | reference relationship that ensures that the parent cannot be garbage      |
-|                                                  | collected while Python is still using the child. More advanced variations  |
-|                                                  | of this scheme are also possible using combinations of                     |
-|                                                  | :enum:`return_value_policy::reference` and the :class:`keep_alive` call    |
-|                                                  | policy described next.                                                     |
+| :enum:`return_value_policy::reference_internal`  | Like :enum:`return_value_policy::reference` but additionally applies a     |
+|                                                  | :class:`keep_alive<0,1>()` call policy (described next) that keeps the     |
+|                                                  | ``this`` argument of the function or property from being garbage collected |
+|                                                  | as long as the return value remains referenced.  See the                   |
+|                                                  | :class:`keep_alive` call policy (described next) for details.              |
 +--------------------------------------------------+----------------------------------------------------------------------------+
 
 .. warning::