Spawning fusermount now works on Linuxes that put it in /usr/bin

We used to assume fusermount is always /bin/fusermount, but it seems
many RPM packages put it in /usr/bin. Let it be found via PATH.

Thanks to Brad Fitzpatrick and the Camlistore project.
Handle Fsync on a directory

Thanks to Brad Fitzpatrick and the Camlistore project.
Support Getxattr

Needed by Camlistore. This implementation is from-scratch and does not
use the work in Camlistore's third_party directory, opting instead to
stay closer in style of the existing code.

Noteworthy difference: Camlistore picked ENOATTR as the error for all
platform Getxattr calls to return. As this seems to be only used by OS
X, I'm opting to use ENODATA instead, consider OS X the odd one out,
and translate ENODATA to ENOATTR on darwin.
Support Listxattr
Support Setxattr
Support Removexattr
Getxattr returns ERANGE if data won't fit
Listxattr returns ERANGE if data won't fit