Use generic arg names for functions without explicitly named arguments

Example signatures (old => new):
  foo(int) => foo(arg0: int)
  bar(Object, int) => bar(self: Object, arg0: int)

The change makes the signatures uniform for named and unnamed arguments
and it helps static analysis tools reconstruct function signatures from
docstrings.

This also tweaks the signature whitespace style to better conform to
PEP 8 for annotations and default arguments:
  " : " => ": "
  " = " => "="
diff --git a/example/issues.ref b/example/issues.ref
index 0386d2c..90d8ce1 100644
--- a/example/issues.ref
+++ b/example/issues.ref
@@ -6,10 +6,10 @@
 [3, 5, 7, 9, 11, 13, 15]
 0==0, 1==1, 2==2, 3==3, 4==4, 5==5, 6==6, 7==7, 8==8, 9==9, 
 Failed as expected: Incompatible function arguments. The following argument types are supported:
-    1. (example.issues.ElementA) -> NoneType
+    1. (arg0: example.issues.ElementA) -> NoneType
     Invoked with: None
 Failed as expected: Incompatible function arguments. The following argument types are supported:
-    1. (int) -> int
+    1. (arg0: int) -> int
     Invoked with: 5.2
 12.0
 C++ version
@@ -21,6 +21,6 @@
 StrIssue.__str__ called
 StrIssue[3]
 Failed as expected: Incompatible constructor arguments. The following argument types are supported:
-    1. example.issues.StrIssue(int)
+    1. example.issues.StrIssue(arg0: int)
     2. example.issues.StrIssue()
     Invoked with: no, such, constructor