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.
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.
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
Add just enough to get travis to run specs and pass

Also add the build status icon to README.md
Closes #42
Move the reporter construction into a factory method.

The factory method lives on the reporter class, as it's going to become
the method with the logic for loading different reporter backends
(for support of things such as etcd).

This is the first step refactoring towards that. There aren't
any current tests, but the method extraction is trivial enough
and I'll build some tests out as I contine to develop the ability
to have multiple reporters.
Add a skeleton zookeeper reporter.

We're not actually using it in any way yet, but this adds the dynamic class loading
so that we can plug other backends in more easily.

The zookeeper reporter inherits from the main reporter where all the code still lives,
so that moving the bulk of the code can be a latter step in refactoring
Actually start returning the new class
Move all zookeeper specific initialization to that reporter.

We're now at the point where all the construction logic is inverted to factories at the variously
correct levels.

Next steps are to start moving zookeeper specific code out of the base classes
Finish adjusting the class hierarchy.

The factory class is now seperate from the base class, which isn't a big deal, but I think is
more elegant (as then the subclasses don't inherit the factory method).

Next up, moving all the code into the child class
Actually move all the code into zookeeper backend.

Leave stubs in the base class which become abstract methods
Remove backend specific factory method in favour of initialize.

Now that all the code is turned round and in the right place, we can elminiate the complexity
of this factory method which is only really doing arg munging.
Fix up bug of still requiring zk_hosts for all backends.

Just remove the checks from the service_watcher, as the reporter already
does the appropriate data validation. Also cleanup the initalize method
in the zookeeper reporter, as it was an over-complex mash of the
initialization code moved in there from the factory method whilst
refactoring
Not actually using pry
keep base reporter in it's own file

removes unused imports from the reporter factory file
documentation: reporter type and the role of `host`

* documents the new `reporter_type` parameter
* makes it clear that there might be other types of reporters beside zookeeper
* clarifies the roles of the `instance_id` and `host` fields