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 `uint >= 0`, it is treated as a file descriptor. In all other cases, the original implementation is used to ensure backwards compatibility. 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. The signature notation was updated to reflect the style used by more recent documentation.

Tests were extended to test for file descriptor parameters under the conditions noted in the relevant documentation.
@trevnorris Can one even recover from a file failing to close? It appears that the [state of a file descriptor is unspecified if it fails](http://pubs.opengroup.org/onlinepubs/9699919799/functions/close.html):

> If close() is interrupted by a signal that is to be caught, it shall return -1 with errno set to [EINTR] and the state of fildes is unspecified. If an I/O error occurred while reading from or writing to the file system during close(), it may return -1 with errno set to [EIO]; if this error is returned, the state of fildes is unspecified.