Repository: node
Issue: make `options.flag[s]` consistent across fs.open, fs.writeFile, fs.appendFile, fs.readFile
Labels: fs

<!--
Thank you for suggesting an idea to make Node.js better.

Please fill in as much of the template below as you're able.
-->


**Is your feature request related to a problem? Please describe.**

this issue blocks pr #35775.  when implementing `fs.openSync(path[, options])` to align with coupled functions `fs.writeFileSync(path[, options]) and fs.appendFileSync(path[, options])`, it turns out they have inconsistent naming for `options.flag[s]`.  blocked-pr is seeking guidance resolving inconsistencies in this issue.

here's a table of the inconsistencies from a cursory inspection of public-facing-filesystem-apis describe in fs.md:
```
filesystem-api        coupling                flag  flags
--------------        --------                ----  -----
fs.readFile           binding.open            x
fs.appendFile         fs.open[Sync]           x
fs.appendFileSync     fs.open[Sync]           x
fs.open               fs.open[Sync]                 x
fs.openSync           fs.open[Sync]                 x
fs.readFileSync       fs.open[Sync]           x
fs.writeFile          fs.open[Sync]           x
fs.writeFileSync      fs.open[Sync]           x
fsPromises.appendFile binding.openFileHandle  x
fsPromises.open       binding.openFileHandle        x
fsPromises.readFile   binding.openFileHandle  x
fsPromises.writeFile  binding.openFileHandle  x
fs.createReadStream   ??                            x
fs.createWriteStream  ??                            x
```


**Describe the solution you'd like**
Please describe the desired behavior.

here are some proposed actionable resolutions that are backwards-compatible with existing code:

1. rename `flags` to `flag` in `fs.open[Sync]` - my preferred option
- user-experience is good
- tech-debt is low as no `options.flag <=> options.flags` monkey-patching between coupled-apis is necessary
- http-links to fs.open[Sync] documentation are broken from external sites like stackoverflow
```
filesystem-api        coupling                flag  flags
--------------        --------                ----  -----
fs.readFile           binding.open            x
fs.appendFile         fs.open[Sync]           x
fs.appendFileSync     fs.open[Sync]           x
fs.open               fs.open[Sync]           +     -
fs.openSync           fs.open[Sync]           +     -
fs.readFileSync       fs.open[Sync]           x
fs.writeFile          fs.open[Sync]           x
fs.writeFileSync      fs.open[Sync]           x
fsPromises.appendFile binding.openFileHandle  x
fsPromises.open       binding.openFileHandle  +     -
fsPromises.readFile   binding.openFileHandle  x
fsPromises.writeFile  binding.openFileHandle  x
fs.createReadStream   ??                            x
fs.createWriteStream  ??                            x
```


2. allow all apis to accept both `flag` or `flags` options. 
- user-experience is good
- tech-debt is reasonable using generalized-input-function to normalize `options.flag => options.flags` for all apis.
- http-links to fs documentation are preserved
```
filesystem-api        coupling                flag  flags
--------------        --------                ----  -----
fs.readFile           binding.open            x     +
fs.appendFile         fs.open[Sync]           x     +
fs.appendFileSync     fs.open[Sync]           x     +
fs.open               fs.open[Sync]           +     x
fs.openSync           fs.open[Sync]           +     x
fs.readFileSync       fs.open[Sync]           x     +
fs.writeFile          fs.open[Sync]           x     +
fs.writeFileSync      fs.open[Sync]           x     +
fsPromises.appendFile binding.openFileHandle  x     +
fsPromises.open       binding.openFileHandle  +     x
fsPromises.readFile   binding.openFileHandle  x     +
fsPromises.writeFile  binding.openFileHandle  x     +
fs.createReadStream   ??                      +     x
fs.createWriteStream  ??                      +     x
```

3. keep inconsistencies the ways they are -- worst option imo
- user-experience is bad
- tech-debt is excessive in maintaining non-reusable conversions between `options.flag <=> options.flags` among coupled functions
- http-links to fs documentation are preserved
```
filesystem-api        coupling                flag  flags
--------------        --------                ----  -----
fs.readFile           binding.open            x
fs.appendFile         fs.open[Sync]           x
fs.appendFileSync     fs.open[Sync]           x
fs.open               fs.open[Sync]                 x
fs.openSync           fs.open[Sync]                 x
fs.readFileSync       fs.open[Sync]           x
fs.writeFile          fs.open[Sync]           x
fs.writeFileSync      fs.open[Sync]           x
fsPromises.appendFile binding.openFileHandle  x
fsPromises.open       binding.openFileHandle        x
fsPromises.readFile   binding.openFileHandle  x
fsPromises.writeFile  binding.openFileHandle  x
fs.createReadStream   ??                            x
fs.createWriteStream  ??                            x
```

@node/fs
alternative resolutions welcome, but they should be backwards-compatible with existing code.
feel free to correct me on any of the assertions above.

**Describe alternatives you've considered**
Please describe alternative solutions or features you have considered.
n/a