VFS: remove inconsistency for Read/Write return type and parameter type

Currently Read return unsigned int, Write return int, but both take int64_t as size of the buffer.
This looks pretty strange as functions unable to report number of processed bytes even if all bytes are processed.

As alternative to this PR I suggest to change type of `BufferSize` to `size_t` and return type of Read/Write to `ssize_t`, because it's not possible to access more than `SIZE_MAX` bytes in buffer.
Sizes more the `SSIZE_MAX` can be ignored as it's 2GB even on 32-bit systems.

@jmarshallnz ?