Added Agent Support

Added support for passing agent.

## Notes to reviewer
This allows us to pass in a tunnel agent for proxy support or use a shared http agent with other modules.