Committing support for OpenBSD.

Yes, I am committing support for FUSE for OpenBSD. This is an actual,
real, honest to (no-)god thing. If you want to know about it and try
it, see here:

http://marc.info/?t=136248759400010&r=1&w=4

Keep in mind that while this builds and runs, you should know a few
things:

 * truncate() does not work. This is not my fault. The fuse kernel
   driver doesn't implement any support for truncate(), never mind
   libfuse. It literally doesn't do anything with it.
 * You can't make anything other than plain files, directories and
   symlinks right now. The kernel driver doesn't support it yet.
 * There is a bug if a file is created in the fuse filesystem and goes
   away, then you create another file of the same name via FUSE and
   try to do utime(). Not sure if it's just utime() or if other things
   trip it too, but I discovered that via playing around. I *THINK*
   it's a vnode caching problem.
 * There's a reason the rename() test doesn't run. IT WILL CRASH YOUR
   KERNEL. No joke. The rename() op in the kernel driver is busted.
 * The kernel code passes the trailing null character at the end of
   the read symlink path in readlink(). This causes all sorts of fun
   trouble. This needs to be fixed in the kernel driver.
 * fuse_get_context() returns an undef, because the reimplemented
   libfuse doesn't implement that. It also doesn't do any argument
   handling at all. Hence why it's all #ifndef'd out for OpenBSD.
 * mknod() will not get called to create a plain file. You need to
   implement create(), unless the OpenBSD devs fix libfuse to call
   mknod() for plain files.
 * You should probably implement release(); the kernel driver bitches
   a lot about the ENOSYS if you don't.
 * You should probably implement all of chown(), chmod() and
   utime() and/or utimens(). The kernel driver will mask out future
   setattr() requests if it gets ENOSYS from ANY of these. Oops.

That said, 'make test' finishes, and with only... some failed tests!