use YAML rather than JSON for configuration files

JSON is an excellent tool for simple data interchange between servers,
but is a royal pain as a configuration file format which must also be
written and read by human beings.  The difference between valid and
invalid JSON is often down to a single character in hard-to-spot places:

    { "valid_json?":
      { "lets":
        ["play",
         "spot",
         "the",
         "syntax",
         "errors",
       ]
      },
    }

(It gets even worse if you want to _generate_ valid JSON in the context
of, say, an ERB/moustache template file: ugly logic must be invoked to
make sure that lists are terminated correctly.)

Even worse: correct JSON does not allow for comments. And while you can
certainly do:

    { "this_dict": {
        "has": "values",
        "and": "a",
        "comment": "which is me!" }
    }

...it's much harder to do something like this:

    { "this_dict": {
        # TODO: restore when bug #7 closes
        # "has": "values",
        # "and": "a",
        "comment": "which is me!" }
    }

...whereas all of the above strings are valid and correct YAML.
make the example config file valid json
don't use require relative in the example watcher
minor whitespace cleanup; remove require_relative
ignore jar file artifact
basic infrastructure for allowing watchers to stop cleanly

this is sufficient for the docker and dns watchers, which run in their
own loops
special stop handler for the zookeeper watcher

calling stop! should unsubscribe from pending events, but we handle this
manually anyway
ensure we explicitly stop all watchers in main thread
re-raise exceptions instead of `throw`ing 'em
Merge pull request #36 from airbnb/cleanup

Cleanup & Proper Exit Handling
bump version to v0.8.0
allow override of listening address

If, for instance, one wanted to have a pool of dedicated haproxy servers that
handled queries for other hosts, it would help to be able to listen on ports
other than localhost.

Default to the expected behavior.
Merge pull request #31 from memory/listen_option

allow override of listening address
The base service watcher uses the logging mixin

This fixes the docker and DNS service watchers
Make the one test there is actually pass
Fix exception handling
Add some tests so that I understand what the hell I'm changing
Allow us to discover docker containers against the newer API
Fix mock data for what actually comes out of the API, and fix code to still work
Merge pull request #40 from bobtfish/extend_docker_watcher_for_new_api

Extend docker watcher for new api