Write data to a file or a stream.
Writes data and returns the number of bytes that were
actually written.
If more than one argument is given, efun::sprintf() will be
used to format them.
If data is an array, it will be concatenated, and then written.
0 is returned in nonblocking mode if it was not possible to write
anything without blocking.
-1 is returned if something went wrong and no bytes were written.