Move test.test_support.catch_warning() to the warnings module, rename it
catch_warnings(), and clean up the API.

While expanding the test suite, a bug was found where a warning about the
'line' argument to showwarning() was not letting functions with '*args' go
without a warning.

Closes issue 3602.
Code review by Benjamin Peterson.
diff --git a/Misc/NEWS b/Misc/NEWS
index 73bcf08..76df45c 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -53,6 +53,11 @@
 Library
 -------
 
+- Issue 3602: Moved test.test_support.catch_warning() to
+  warnings.catch_warnings() along with some API cleanup. Expanding the tests
+  for catch_warnings() also led to an improvement in the raising of a
+  DeprecationWarning related to warnings.warn_explicit().
+
 - The deprecation warnings for the old camelCase threading API were removed.
 
 - logging: fixed lack of use of encoding attribute specified on a stream.