Add the initial sendfile + kqueue notification support.

This now (hopefully!) correctly spaces out sendfile() sends until the
previous one is completed.  I will eventually add support to send
multiple different sendfile transactions out a socket so the socket
buffer can stay partially filled but that's a later hack.

in any case:

* introduce a new ev_sendfile event in the comm struct.
* register it regardless; it's a notification event rather than
  registering with kqueue.
* when creating a sendfile() from posix shared memory, populate the
  kqueue information correctly so the completion ends up back with us.
* if sendfile returns sbytes > 0, then we assume some work was done
  and the kqueue notification mechanism will tell us upon event
  completion, so we override the errno in that instance.
* break out the second half of the comm write callback - the bits
  that handle the error and write completion - and stick it in
  a function.
* .. this function is called immediately for non-sendfile and for
  sendfile-error-and-no-data-writes; but for sendfile it's called once
  we get the notification.
* add some hooks to ensure we don't queue another write whilst a sendfile
  is in progress.