Patch #1454481:  Make thread stack size runtime tunable.

Heavily revised, comprising revisions:
46640 - original trunk revision (backed out in r46655)
46647 - markup fix (backed out in r46655)
46692:46918 merged from branch aimacintyre-sf1454481

branch tested on buildbots (Windows buildbots had problems
not related to these changes).
diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py
index 7eb9758..02f338a 100644
--- a/Lib/test/test_threading.py
+++ b/Lib/test/test_threading.py
@@ -85,6 +85,22 @@
             print 'all tasks done'
         self.assertEqual(numrunning.get(), 0)
 
+    # run with a minimum thread stack size (32kB)
+    def test_various_ops_small_stack(self):
+        if verbose:
+            print 'with 32kB thread stack size...'
+        threading.stack_size(0x8000)
+        self.test_various_ops()
+        threading.stack_size(0)
+
+    # run with a large thread stack size (1MB)
+    def test_various_ops_large_stack(self):
+        if verbose:
+            print 'with 1MB thread stack size...'
+        threading.stack_size(0x100000)
+        self.test_various_ops()
+        threading.stack_size(0)
+
     def test_foreign_thread(self):
         # Check that a "foreign" thread can use the threading module.
         def f(mutex):