Implementation: debugd

The debug daemon uses chromeos-dbus-bindings to serve DBus clients. The daemon is broken up into tools, which implement closely-related sets of functions that can share significant code.

A tool is a set of closely related API functions that diagnoses one thing (for example, ICMP connectivity). The debug daemon invokes the corresponding tool for each of its API functions. Dividing the DBus interface from the implementations of each tool keeps the DebugDaemon class from growing too large and makes it easier to test the individual tools.