Proxy support

Hi

To access the urbanairship service we are required to call over a http proxy. We have therefore added proxy support to the APIClient.

It works so that if a proxy has been set by the caller, it is used and if proxy authentication has been set, it is used. We use both no-authentication and NTCredentials style authentication for NTLM based proxy.

Since the information required for proxy authentication varies (username+password or username+password+workstationname+domain), we have opted to expose the credentials type to the client, so that the caller creates the credentials object and passes that via setProxyCredentials(). Similarly the hostname+port number of the proxy are also passed via a HttpHost object.

Please consider this for inclusion in the urbanairship java library.

Thanks,

/Allan
Let's not pass Request into provisionExcutor().  Instead, operations on Request should be done in provisionRequest().