Document rules for debug functions
Document ReadRequest behavior dictated by kernel.

OSXFUSE will close /dev/fuse on a timeout, so each request must be
promptly responded to. Linux is more lenient.

All platforms require exactly one response to every request.
Buffer pool for kernel messages, to avoid GC churn

Nothing is yet returned to the pool.
ReadRequest return message to pool on error paths
RespondError returns message to pool
Respond returns message to pool

Change Conn.respond and Conn.respondData calls to go via Header, that
now remembers the message to return to the pool.

The type `message` adds an awkward indirection where Header knows
message and message knows Header. Perhaps they can be combined,
in a later cleanup.

Many unnecessary allocations remain, but after this the largest
objects are recycled.
ForgetRequest and InterruptRequest Respond returns messages to pool

These message types don't have an actual kernel-level response, so
they don't have a natural point to hook into. Add an explicit
noResponse method that just returns the message to the pool.

The caller-visible call Respond is there and ReadRequest documentation
tells caller to call Respond, so that part is covered.
Increase /dev/fuse read max size from 128kB to 16MB

This should help with OS X large xattrs

fixes https://github.com/bazillion/fuse/issues/42