Guard against nil error in short kernel write debug message
Human-friendly formatting for short kernel write debug message
Report expected length in short kernel write debug message
Rewrite OS X mounting from scratch

This is a clean rewrite and thus changes behavior. Tested on OS X
Mavericks with OSXFUSE 2.6.2.
Handle /dev/osxfuseN EINTR seen on OS X
Test code cleanup: ioutil.TempDir creates the temp dir already
Unmount is now a helper function for everyone to use

Details of unmounting are platform-specific, and unit tests already
had this code, so might as well provide it for everyone.

Make returned error contain any error messages output by the unmount
process.
fs/fstestutil: Library to decrease testing boilerplate

Due to cyclic dependency (test->fstestutil->fuse,fs), tests need to
move out of the fs package, to fs_test. This suits my preferences
better anyway, I want to do blackbox testing where possible with code
that matches actual use closer. This also lets me work the tests away
from the one big table they are currently all under; I feel that is
unnecessarily restrictive, and the tests are growing too complex for
table-driven testing.

As this is a potentially errorprone mass edit, move tests one at a
time, to make diffs reviewable. My apologies if this makes software
archeology harder.
Log unmount errors in tests, for easier debugging

In particular, `fusermount -u` failing because mountpoint is still
busy was silent.
fs.Server is an extensible way to configure a FUSE Serve loop

Setting Server.Debug controls debug logging for just that FUSE Serve
loop. This will be used by unit tests, next.
fstestutil.MountedT helps tests have debug log go to testing.T.Logf
Tests with `-fuse.debug` write misc FUSE log to default log

There are some debug log sources that are not currently tied to a
connection. We don't want to lose those.
Refactor TestStatfs

On Linux, waitForMount is not needed; there mounting is synchronous
and if Mount returns success, all accesses will wait until Serve gets
to them.

On OS X, mount wants to perform the InitRequest handshake
synchronously, so current code just starts it off in a child process
and forgets about it.

This will be cleaned up and made more robust later.
Refactor TestStatRoot
Refactor TestReadAll, TestReadAllWithHandleRead
Refactor TestRelease
Refactor TestWrite
Refactor TestWriteTruncateFlush
Extract shared code from TestRelease, TestWrite, TestWriteTruncateFlush
Refactor record.Setattrs