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.
introduce .mailmap

Dedups git shortlog -sne
Optional instance_id command line argument

Added possibility to pass instance_id as a command line argument.
By this way Nerve configuration can be more generic and be used across
multiple nodes.
better exit handling on watcher exception

Without re-raising the error in the main loop, it is possible for a watcher to
stop without the process exiting, for example:

E, [2014-01-17T20:30:37.340407 #26185] ERROR -- Nerve::ServiceWatcher: nerve: error in service watcher xweb: response for meth: :exists, args: [0, "/nerve/services/xweb", nil, nil], not received within 30 seconds
I, [2014-01-17T20:30:37.340516 #26185]  INFO -- Nerve::ServiceWatcher: nerve: ending service watch xweb
  <...and then 48 hours of radio silence until I happen to notice and restart nerve.rb...>
I, [2014-01-19T21:15:09.840493 #17382]  INFO -- Nerve::Nerve: nerve: starting up!
I, [2014-01-19T21:15:09.840664 #17382]  INFO -- Nerve::Nerve: nerve: starting run

Ideally we'd just re-start the watcher itself, but this will at least ensure that nerve
never hangs around with a stopped watcher, and as long as you run under some reasonable
process management framework (upstart, daemontools, systemd) you'll come around and try
again a few moments later.
log service watcher errors when not in debug mode

Currently, unless the log level is set to debug, nerve is silent as to _why_ a
service is marked unhealthy.  We should not have to spam the log files with
debug messages in order to find out why a service was marked down.

Also, move ignore_errors into the base watcher so that it can log the name of
the failing watcher, and rename it to catch_errors since ignoring isn't quite
what we're doing any more.

Also: log the response body when we get an error or loglevel is debug.
Merge pull request #35 from memory/log-errors

log service watcher errors when not in debug mode
update bunny to 1.1.0-release

Otherwise the following happens to rabbitmq watchers:

[2014-01-22T20:19:46.313550 #29832]  INFO -- Nerve::ServiceCheck::RabbitMQServiceCheck: nerve: service check rabbitmq rabbitmq-i-9334a2e3:40050 got error #<NoMethodError: undefined method `event_loop' for #<Bunny::Session:0x00000003469238>>
Merge pull request #38 from memory/bunny-upgrade

update bunny to 1.1.0-release
Merge pull request #37 from memory/watcher-exit

34: better exit handling on watcher exception
always create sequential nodes

this makes it trivially possible to do leader election in synapse.
Revert "begin by reporting the service as down"

This reverts commit 4390e9d6c57f28b28dc7b3fdc7c714553efb1a8f.

Now that we're creating all nodes as sequential nodes, there's no
reason to do this.
Merge pull request #25 from memory/yaml-conf

use YAML rather than JSON for configuration files
add contributor guidelines
Merge pull request #32 from eaapa/id_cmd_param

Optional instance_id command line argument
Merge pull request #40 from airbnb/sequential_nodes

Sequential nodes
bin/nerve: fix yaml parsing; better help message
update Gemfile.lock
bin/nerve: really make -i optional
bump version to 0.4.0
Update README.md