rework Kqueue

Rework the kqueue code:

* add low-level kqueue wrapper functions used by the rest of fsnotify's kqueue implementation
* one mutex instead of several more granular ones, as suggested in #13
* remove calls to os.NewSyscallError
* some refactoring

Notes:

* No longer checks for EV_ERROR, see https://github.com/go-fsnotify/fsnotify/issues/24#issuecomment-55530131.
* Made the done channel unbuffered (previously was a 1 element buffer)