VFS truncate

Also flushes the PM on O_TRUNC and touches up some sync on the file
size, since it just needed a spinlock.  Too bad the VFS was built before
we had semaphores, though it probably still would be rather racy.

Note that KFS won't write pages back, so any modifications to a file
won't exist outside of the page cache.  This isn't particularly related
to truncates extending a file, since the same thing happens with
write().