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.