timeit: start autorange with 1 iteration, not 10

Issue #28240: timeit autorange now uses a single loop iteration if the
benchmark takes less than 10 seconds, instead of 10 iterations.

"python3 -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds
instead of 40 seconds.
diff --git a/Lib/timeit.py b/Lib/timeit.py
index 2770efa..0040efd 100644
--- a/Lib/timeit.py
+++ b/Lib/timeit.py
@@ -218,7 +218,7 @@
         If *callback* is given and is not None, it will be called after
         each trial with two arguments: ``callback(number, time_taken)``.
         """
-        for i in range(1, 10):
+        for i in range(0, 10):
             number = 10**i
             time_taken = self.timeit(number)
             if callback:
@@ -318,8 +318,10 @@
         callback = None
         if verbose:
             def callback(number, time_taken):
-                msg = "{num} loops -> {secs:.{prec}g} secs"
-                print(msg.format(num=number, secs=time_taken, prec=precision))
+                msg = "{num} loop{s} -> {secs:.{prec}g} secs"
+                plural = (number != 1)
+                print(msg.format(num=number, s='s' if plural else '',
+                                  secs=time_taken, prec=precision))
         try:
             number, _ = t.autorange(callback)
         except:
@@ -333,7 +335,7 @@
     best = min(r)
     if verbose:
         print("raw times:", " ".join(["%.*g" % (precision, x) for x in r]))
-    print("%d loops," % number, end=' ')
+    print("%d loop%s," % (number, 's' if number != 1 else ''), end=' ')
     usec = best * 1e6 / number
     if time_unit is not None:
         scale = units[time_unit]