Issue #17435: Don't use mutable default values in Timer.

Patch by Denver Coneybeare with some test modifications by me.
diff --git a/Lib/threading.py b/Lib/threading.py
index 6c34d49..46df676 100644
--- a/Lib/threading.py
+++ b/Lib/threading.py
@@ -802,17 +802,17 @@
 class Timer(Thread):
     """Call a function after a specified number of seconds:
 
-    t = Timer(30.0, f, args=[], kwargs={})
+    t = Timer(30.0, f, args=None, kwargs=None)
     t.start()
     t.cancel() # stop the timer's action if it's still waiting
     """
 
-    def __init__(self, interval, function, args=[], kwargs={}):
+    def __init__(self, interval, function, args=None, kwargs=None):
         Thread.__init__(self)
         self.interval = interval
         self.function = function
-        self.args = args
-        self.kwargs = kwargs
+        self.args = args if args is not None else []
+        self.kwargs = kwargs if kwargs is not None else {}
         self.finished = Event()
 
     def cancel(self):