Handle O_CREATE flag to *MemMapFs.OpenFile.

To allow MemMapFs to be used in place of OsFs in tests where this flag
is used to create the file if it doesn't already exist..
diff --git a/fs_test.go b/fs_test.go
index 92cbf6f..ab667e9 100644
--- a/fs_test.go
+++ b/fs_test.go
@@ -70,6 +70,21 @@
 	}
 }
 
+func TestOpenFile(t *testing.T) {
+	for _, fs := range Fss {
+		path := testDir + "/" + testName
+		fs.MkdirAll(testDir, 0777) // Just in case.
+		fs.Remove(path)            // Just in case.
+
+		f, err := fs.OpenFile(path, os.O_CREATE, 0600)
+		if err != nil {
+			t.Error(fs.Name(), "OpenFile (O_CREATE) failed:", err)
+			continue
+		}
+		f.Close()
+	}
+}
+
 func TestMemFileRead(t *testing.T) {
 	f := MemFileCreate("testfile")
 	f.WriteString("abcd")
diff --git a/memmap.go b/memmap.go
index 5020e4c..7053fa3 100644
--- a/memmap.go
+++ b/memmap.go
@@ -205,7 +205,11 @@
 }
 
 func (m *MemMapFs) OpenFile(name string, flag int, perm os.FileMode) (File, error) {
-	return m.Open(name)
+	file, err := m.Open(name)
+	if os.IsNotExist(err) && (flag&os.O_CREATE > 0) {
+		file, err = m.Create(name)
+	}
+	return file, err
 }
 
 func (m *MemMapFs) Remove(name string) error {