This commit was starting to go the direction of using an interface for an HttpClient to be injected into GWTdata, but I'm about to change directions.
New usage injects a callback which the GWTdata object can use to send HTTP requests. The intent is to remove the curl dependency. E.g. the callback could use Guzzle, or PHP stream wrappers. This commit breaks backward compatibility, but I plan to fix it by adding a default http_client that is set in the constructor if another is not provided. This commit introduces the following methods: setHttpClient(), callHttpClient(), getLogInRequest(), parseAuthToken(), GetDataRequest(), GetSitesRequest(), parseSites(), GetDownloadUrlsRequest().
Added curl_http_client() as a default HTTP client.
Also a few bug fixes such as POST for LogIn.
Now GWTdata accepts a callback to handle the CSV files which could do something else instead of saving to a file. E.g. the callback could write to a database, or transform the data and upload to a different service. New methods are: setCsvHandler(), callCsvHandler(), and file_csv_handler() which is the default csv handler. Also changed the filename to include path, not just PHP_URL_HOST, because Google Webmaster Tools allows an account to have multiple sites with the same host & domain name, but different paths.

Also fixed callHttpClient() and changed curl_http_client() to a static method.