Implement an httpclient abstraction over Net::HTTP for making GET requests. It should:
* Return puppet response objects, not Net::HTTP * Raise puppet exceptions, not Net::HTTP exceptions * Use persistent HTTP connections * Stream response body * Observe connection and read timeouts * Observe proxy settings or env variables * Send {{User-Agent}} and {{X-Puppet-Version}} HTTP headers * Support gzip and inflate de/compression * Support server basic authentication * Escape query parameters and request paths * Uses the default puppet ssl context, which contains the verification mode, CA certs, CRLs, etc