Change Windows file.truncate() to (a) restore the original file position,
and (b) stop trying to prevent file growth.

Beef up the file.truncate() docs.

Change test_largefile.py to stop assuming that f.truncate() moves the
file pointer to the truncation point, and to verify instead that it leaves
the file position alone.  Remove the test for what happens when a
specified size exceeds the original file size (it's ill-defined, according
to the Single Unix Spec).
diff --git a/Lib/test/test_largefile.py b/Lib/test/test_largefile.py
index bc24635..8bff5df 100644
--- a/Lib/test/test_largefile.py
+++ b/Lib/test/test_largefile.py
@@ -133,24 +133,30 @@
         print 'try truncate'
     f = open(name, 'r+b')
     f.seek(0, 2)
-    expect(f.tell(), size+1)
+    expect(f.tell(), size+1)    # else we've lost track of the true size
     # Cut it back via seek + truncate with no argument.
     newsize = size - 10
     f.seek(newsize)
     f.truncate()
-    expect(f.tell(), newsize)
-    # Ensure that truncate(bigger than true size) doesn't grow the file.
-    f.truncate(size)
-    expect(f.tell(), newsize)
+    expect(f.tell(), newsize)   # else pointer moved
+    f.seek(0, 2)
+    expect(f.tell(), newsize)   # else wasn't truncated
     # Ensure that truncate(smaller than true size) shrinks the file.
     newsize -= 1
-    f.seek(0)
+    f.seek(42)
     f.truncate(newsize)
-    expect(f.tell(), newsize)
+    expect(f.tell(), 42)        # else pointer moved
+    f.seek(0, 2)
+    expect(f.tell(), newsize)   # else wasn't truncated
+
+    # XXX truncate(larger than true size) is ill-defined across platforms
+
     # cut it waaaaay back
-    f.truncate(1)
     f.seek(0)
-    expect(len(f.read()), 1)
+    f.truncate(1)
+    expect(f.tell(), 0)         # else pointer moved
+    expect(len(f.read()), 1)    # else wasn't truncated
+
     f.close()
 
 os.unlink(name)