Add revision for Registry and Service APIs with tests.

What was previously the top-level Discovery object is now
renamed the Registry, and all objects within it are (perhaps
appropriately) named Services. To update announcements, the
Service object itself may be updated.

Tests cover the new expectations, breaking down the internal
APIs for Service and Registry.
Add UdpBroadcast Manager and abstract Manager parent class.

Includes a test that brings a basic Service up against a
UDP-managed Registry with a known id. The mocha process
forks the Service process, listening for changes on its own
Registry instance.
Add a couple more test scenarios.

The test scenario with an update crashes Node and causes undefined
behaviour, so we need to work that out first.
Add more involved UDP test and fix service updating.

The UDP tests still crash if mocha is configured to run more than one.
Use it.skip or it.only to configure.
Add delimiter to UdpBroadcastManager ID.
Add a multi-process test to generate rich log output.

When used with DEBUG=*, `node test/cluster` generates rich output to
validate our assumptions by. For example, the current implmementation
receives multiple messages for all updates past the first.
Add protection against replaying remote update events.
Fix Service.emit and add more Service tests.
Keep Service availability in sync after up-down-up.

Previously, Registries would ignore the second "available" event.
Now, Registries will handle a second "available" appropriately, while
still distinctly from the first, which requires creating a new
Service object rather than simply assigning availability.
Fix duplicate "update" messages from Services.

Under circumstances I'm unable to duplicate beyond a specific machine
on a specific network, the UdpBroadcast Manager receives duplicate
messages shortly after startup. This caused duplicate events to be
fired from the Registry, breaking the tests and a number of assumptions.

This commit adds a guard against that behaviour.
Make cluster logging test more useful.
Add test for duplicate UDP updates.
Add more unique, immediately-available UdpManager IDs.

Previously, it used the host/port as bound, which are neither unique
nor available immediately. It was a quick solution, but this one
(based on `os.networkInterfaces()` via the `ip` module) is a more
sustainable and accurate solution.
Remove reasons from all events.

Reasons are currently a hold-over from the previous implementation,
and will be easier to add in:
 - If needed
 - After the rest of the API is set

For now, it'll be easier to narrow the scope and build the API first.
Add documentation to more refined parts of the API.
Implement UDP timeouts with test.

One side effect: All Managers contain a snapshot of the local services
as `this.services`. I imagine this to be a common benefit to Manager
implementations, but it can be easily moved into the subclasses later
if proven otherwise.
Implemented HTTP-based tracker.

The tests that are here run fine individually, but not in aggregate.
All HTTP tests run.
Clean up and document the tracker.

Options and settings are now loaded via optimist and rc, and
docstrings abound.
Timeout HTTP test works consistently.