Talk to Watchman using its binary protocol

A couple of people have reported problems building and using Command-T
as a result of issues with the JSON library, which we started requiring
in commit d24139eb779. For example, see:

  https://github.com/wincent/Command-T/issues/68

This commit removes that dependency, replacing it with an implementation
of the Watchman binary protocol. As a bonus (and in fact, this was my
initial motivation for starting to look at this, before I'd heard of
JSON-related problems), this reduces the cost of communicating with
Watchman by about half:

                          user     system      total        real
    watchman JSON     1.310000   0.250000   1.620000 (  5.784897)
    watchman binary   0.620000   0.220000   0.890000 (  3.839422)

Those are the timings produced by running the script in
bin/benchmarks/watchman.rb in a Watchman-monitored directory containing
well over 300k files. The speed-up is due to the fact that the binary
protocol format is much more compact, resulting in less data being
transmitted over the socket, and also because parsing JSON is typically
pretty slow.

The protocol adapter added here has been written in a relatively
straightforward way, without any hoop-jumping in the name of
optimization. It would likely be possible to make it go even faster with
some corner-cutting, but I don't really see the need for that at this
point.

I don't really test on Windows any more, so I've tried to make this safe
on Windows by adding some checks for header files which I don't expect
to be available there. On such a platform, compilation should still
succeed, but the compiled code just has some stub modules in it which
raise exceptions. Watchman doesn't work on Windows anyway, so Windows
uses shouldn't really notice any difference.

This is the first cut; I expect to do some more clean-up in follow-up
commits.

Signed-off-by: Wincent Colaiuta <win@wincent.com>