Remove -DNDEBUG from compile options so assert() is compiled in on debug builds
Work-around bug williamh/dotconf#1: don't trust the return value of dotconf_command_loop(), use state->error to detect whether an error occured in an included file
Add SocketConfig::toString
Catch ConfigReader::exception in DaZeus and act upon it
dazeus::DaZeus::stop() is actually void, it doesn't return
Make dazeus::PluginComm::run() take its timeout as a parameter
Implement PluginMonitor: a class that automatically starts plugins and monitors their status. Closes #14.

When DaZeus starts, it creates a PluginMonitor that defines PluginStates for all plugins that will be run: one for every plugin in global scope, and N for every plugin in network scope where N is the number of networks. In runOnce(), all plugins will be initially started (PluginMonitor::start_plugin()). When they die or are stopped (PluginMonitor::stop_plugin()), they will cause SIGCHLD signals which are routed from sigchild_handler() in main to the PluginMonitor, which will queue a wait4() check. When this wait4() check happens, all died children will be cleaned up and restarted. The number of subsequent failures is tracked; the more a plugin fails, the more time PluginMonitor waits before doing restart attempts (up to 300 seconds).

When DaZeus exits, PluginMonitor gives all plugins 4 seconds to shut down (SIGINT then SIGKILL). They cannot catch a SIGKILL, so this means they will be gone after the PluginMonitor is cleaned up.

* The first defined socket in the configuration file will be given to plugins to connect to (ConfigReader::getPluginSocket()).
* Added some sanity checks to plugin configuration reading
* Replaced std::string scope with bool per_network in PluginConfig, as the only two supported scopes are "Global" and "Network"
* Improved documentation in the configuration files.
* When the PluginMonitor reports it still has processing to do (killed children to clean up or waiting for plugins to start), the PluginComm event loop will only wait 1 second for any updates to handle; this means granularity of PluginMonitor updates is 1 second in these cases.
* If PluginMonitor has nothing to do the PluginComm will wait 30 seconds, as it will be automatically interrupted when there is something to do.
Remove warnings that occur in third-party libraries