improve several corner cases related with argument names in parenthesis

- Fix #7362: give a good error message for parenthesized arguments with
  defaults.

- Add a py3k warning for any parenthesized arguments since those are not allowed
  in Py3.  This warning is not given in tuple unpacking, since that incurs the
  tuple unpacking warning.
diff --git a/Lib/test/test_py3kwarn.py b/Lib/test/test_py3kwarn.py
index c7fdd6b..d754faa 100644
--- a/Lib/test/test_py3kwarn.py
+++ b/Lib/test/test_py3kwarn.py
@@ -30,6 +30,18 @@
             exec "`2`" in {}
         self.assertWarning(None, w, expected)
 
+    def test_paren_arg_names(self):
+        expected = 'parenthesized argument names are invalid in 3.x'
+        def check(s):
+            exec s in {}
+            self.assertWarning(None, w, expected)
+        with check_warnings() as w:
+            check("def f((x)): pass")
+            check("def f((((x))), (y)): pass")
+            check("def f((x), (((y))), m=32): pass")
+            # Something like def f((a, (b))): pass will raise the tuple
+            # unpacking warning.
+
     def test_forbidden_names(self):
         # So we don't screw up our globals
         def safe_exec(expr):