first pass at client keep-alive (missing connection close logic, error handling)
fix up IncomingMessage listeners
refactor how agent manages "pool" to much cleaner abstraction