accept None as the same as having passed no argument in file types #7349

This is for consistency with imitation file objects like StringIO and BytesIO.

This commit also adds a few tests, where they were lacking for concerned
methods.
diff --git a/Lib/test/test_fileio.py b/Lib/test/test_fileio.py
index 87bf015..91c5251 100644
--- a/Lib/test/test_fileio.py
+++ b/Lib/test/test_fileio.py
@@ -71,6 +71,15 @@
         n = self.f.readinto(a)
         self.assertEquals(array(b'b', [1, 2]), a[:n])
 
+    def test_none_args(self):
+        self.f.write(b"hi\nbye\nabc")
+        self.f.close()
+        self.f = _FileIO(TESTFN, 'r')
+        self.assertEqual(self.f.read(None), b"hi\nbye\nabc")
+        self.f.seek(0)
+        self.assertEqual(self.f.readline(None), b"hi\n")
+        self.assertEqual(self.f.readlines(None), [b"bye\n", b"abc"])
+
     def testRepr(self):
         self.assertEquals(repr(self.f), "<_io.FileIO name=%r mode='%s'>"
                                         % (self.f.name, self.f.mode))