Use streamsize instead of ssize_t for portability.
Add FileDescriptor::write.