fs: Add file descriptor support to *File() funcs

These changes affect the following functions and their synchronous counterparts:

 * `fs.readFile()`
 * `fs.writeFile()`
 * `fs.appendFile()`

If the first parameter is a String (i.e. a path), the original implementation is used. Otherwise, a file descriptor is assumed. File descriptor ownership is never taken from the user.

The documentation was adjusted to reflect these API changes. A note was added to make the user aware of file descriptor ownership and the conditions under which a file descriptor can be used by each of these
functions.

Tests were extended to test for file descriptor parameters under the conditions noted in the relevant documentation.
A similar note is part of the `fs.readFile(file[, options], callback)` documentation, which is referenced by `fs.readFileSync(file[, options])`. No other synchronous method has any additional notes aside from referencing the asynchronous version. I tried to make the documentation more uniform, despite the note being accurate. Less duplication, less potential for errors.

Would you prefer me putting it back in?