Support O_TRUNC flag to MemMapFs.OpenFile

To truncate an existing file when opening.
diff --git a/fs_test.go b/fs_test.go
index bdbdc7e..63cdc33 100644
--- a/fs_test.go
+++ b/fs_test.go
@@ -100,6 +100,17 @@
 			t.Errorf("%v: appending, expected '%v', got: '%v'", fs.Name(), expectedContents, string(contents))
 		}
 		f.Close()
+
+		f, err = fs.OpenFile(path, os.O_RDWR|os.O_TRUNC, 0600)
+		if err != nil {
+			t.Error(fs.Name(), "OpenFile (O_TRUNC) failed:", err)
+			continue
+		}
+		contents, _ = ioutil.ReadAll(f)
+		if string(contents) != "" {
+			t.Errorf("%v: expected truncated file, got: '%v'", fs.Name(), string(contents))
+		}
+		f.Close()
 	}
 }
 
diff --git a/memmap.go b/memmap.go
index 686d0e6..2046063 100644
--- a/memmap.go
+++ b/memmap.go
@@ -219,6 +219,13 @@
 			return nil, err
 		}
 	}
+	if flag&os.O_TRUNC > 0 && flag&(os.O_RDWR|os.O_WRONLY) > 0 {
+		err = file.Truncate(0)
+		if err != nil {
+			file.Close()
+			return nil, err
+		}
+	}
 	return file, nil
 }