Fixed #23911 -- Added support for buffer file uploads in the test client

This patch renders the use of NamedTemporaryFile for file upload testing unnecessary
We try to make the versionadded boxes self-contained so they can be removed in 2 versions without needing to reflow their content back in with the regular text. Here's what I suggest:
```diff
diff --git a/docs/topics/testing/tools.txt b/docs/topics/testing/tools.txt
index 4873008..a3ce1e7 100644
--- a/docs/topics/testing/tools.txt
+++ b/docs/topics/testing/tools.txt
@@ -229,14 +229,7 @@ Use the ``django.test.Client`` class to make requests.
 
         Submitting files is a special case. To POST a file, you need only
         provide the file field name as a key, and a file handle to the file you
-        wish to upload as a value.
-
-        .. versionadded:: 1.8
-
-            You may provide any file-like object (e.g., StringIO or BytesIO)
-            as a file handle.
-
-        For example::
+        wish to upload as a value. For example::
 
             >>> c = Client()
             >>> with open('wishlist.doc') as fp:
@@ -256,6 +249,13 @@ Use the ``django.test.Client`` class to make requests.
         such as an image, this means you will need to open the file in
         ``rb`` (read binary) mode.
 
+        You may also provide any file-like object (e.g., :class:`~io.StringIO` or
+        :class:`~io.BytesIO`) as a file handle.
+
+        .. versionadded:: 1.8
+
+            The ability to use a file-like object was added.
+
         The ``extra`` argument acts the same as for :meth:`Client.get`.
 
         If the URL you request with a POST contains encoded parameters, these
```