Remove Serve knowledge from Conn.

Now the low-level connection is just a request reader and responder.

API change: ``c.Serve(fs)`` is now ``fuse.Serve(c, fs)``
Test that error from .Root() is handled right.
WriteAll support in SetattrRequest handling was buggy on truncate(2).

Add tests for various file truncation mechanisms.
Get HandleID from from request only when it's needed.

This is needed to split low-level and high-level APIs well.
The previous implementation relied on unexported methods,
and since not all requests have handle, this seems cleaner.
Move the high-level API to bazil.org/fuse/fs.

The top-level now contains things related to the raw kernel protocol:
func Mount and type Conn that are about the communication itself,
XxxRequest and XxxResponse types, and types used for communication
such as Attr.

fs now contains the Serve function, and anything that keeps in-memory
state as part of the serving. It contains interfaces that the Serve
API uses, including interfaces FS, Node, and Handle.

This will hopefully make the documentation more browseable.
Move HandleRead to new package fuseutil.

It's a simple helper utility with universal appeal and does not belong
inside the higher-level fs package.
State Tree assumptions more explicitly.
Use interfaces to document FS methods.

Remove confusing and outdated Rename documentation.
Use interfaces to document Handle methods.
Add test for statfs, fstatfs.
Use interfaces for documenting Node methods.