Network byte counter and dependencies/monitor cleanup

Primary purpose of this PR is to add network byte counting to Client/Slave. 

Along the way I also cleaned up usages of DependencyResolver and Monitors, so that dependencies and monitor usage is more explicit. Long-term goal is to have no manual DependencyResolvers, and to have no direct usages of Monitors unless absolutely necessary.