Implement cb macro

'cb' stands for callback. This lets us create data structures that are like
closures and, if they appear in a dump of application data, actually have enough
information to help you debug.
Use the cb macro for the 'callback' pattern

In the places in code where we have used a function with optional 'context'
arguments for a callback, use the cb macro. This macro uses lexical closures
AND includes context information (i.e. closure bindings) in the dump of the cb
data.
Make watcher test give a more informative message upon failure
Add dependencies on barbarywatchservice and jna libraries

barbarywatchservice supplies a file system watcher similar to that in
java.nio.file. However, java.nio.file uses polling to watch for changes on Mac
OS X. barbarywatchservice uses native OS X APIs to listen to filesystem changes.

barbarywatchservice does not seem to be available in Maven or Clojars, so we
add the source to this repository. It is compiled by Leiningen automatically.

We also must pull in the jna library from Maven, since it is required to compile
barbarywatchservice.

This commit does not actually cause watcher.clj to use barbarywatchservice. That
will come in a follow-up CL.
Remove support for the polling Barbary watch service

We don't use it and don't want to have to maintain it.
barbarywatchservice: Do not look for modified files recursively
Clean up watcher.clj unit test

- Use spit rather than the java.io API directly where possible. This increases
  the stability of the test in some circumstances because spit automatically
  flushes and closes the stream. The previous code does not.
- Add a test for creating a new directory.
Use the barbarywatchservice library in watcher.clj

This makes listening for file events much more responsive on Mac OS X. On Mac
OS X, the java.nio.file file system watcher functionality is polling-based, so
there is noticeable lag before changes are pushed to peers.
Add *agent* precondition to source/start-watching