break out watchers in their own dirs

Summary:
As we've been threatening to do for quite some time, break up root.c a bit.

This is a relatively straightforward refactoring; breaks out the OS specific
watching interface code to source modules under the watcher dir.

I had to fix up a couple of build issues on FreeBSD where it got broken
by some NetBSD changes, and also to pass gmake through to the portions
of the test harness that assumed make.

Test Plan:
build and make integration on OS X, Linux, FreeBSD and
Illumos.

On FreeBSD, because I have a huge uid, I have to run like this:

`MAKE=gmake gmake ARFLAGS=cruD integration`

Reviewers: sid0

Reviewed By: sid0

Differential Revision: https://reviews.facebook.net/D28167