default client: use custom HostnameVerifier if overridden

Sometimes, it's useful to override the hostname verifier for SSL connections.
One example, would be when you're developing against a test server managed by
another company that's using a self-signed certificate with a mis-matched
hostname. This patch enables that usage by overriding the default
HostnameVerifier in a Dagger module.

Adding test coverage required switching the TrustingSSLSocketFactory from
using an anonymous cipher suite to one that authenticates.  A test keystore is
used for this purpose.  It contains two self-signed certificates, one
each with alias (and CN) "localhost" and "bad.example.com".  The
TrustingSSLSocketFactory is no longer a singleton; it now
optionally takes a key alias as an argument.
Merge pull request #54 from davidmc24/custom-hostnameverifier

default client: use custom HostnameVerifier if overridden
default client: add support for gzip-encoded request bodies (#52)

Enhances the default client to GZIP-encode request bodies when the appropriate
content-encoding header is set in the interface's method definition.

https://github.com/Netflix/feign/issues/52
Merge pull request #56 from davidmc24/gzip-encoding

default client: add support for gzip-encoded request bodies (#52)
issue #55: support iterable query params
Merge pull request #58 from Netflix/iterable-query

support iterable query params
Support urls which have query parameters
Merge pull request #60 from Netflix/url-query

Support urls which have query parameters
Fix NullPointerException when equals or hashCode are called on proxy instance

They look something like this:

java.lang.NullPointerException
	at feign.ReflectiveFeign$FeignInvocationHandler.invoke(ReflectiveFeign.java:88)
	at feign.$Proxy16.equals(Unknown Source)

In  my particular instance, I had a proxy created by Feign registered in a Spring application context,
and it resulted in a NullPointerException on application shutdown.
Merge pull request #61 from davidmc24/fix-equals-hashcode

Fix NullPointerException when equals or hashCode are called on proxy instance
issue #53: update readme with a warning
Remove support for Observable methods.
Merge pull request #62 from Netflix/no-observable

Remove support for Observable methods.
SaxDecoder now decodes multiple types.
Remove pattern decoders in favor of SaxDecoder.
Merge pull request #63 from Netflix/global-saxdecoder

global custom XML decoder
Simplify Encoder/Decoder interfaces (#53)

This is intended as a step towards simplifying Feign.
This changeset removes the generics from both interfaces, and changes their
Dagger bindings from SET to UNIQUE.

Additionally, in changing the signatures for Encoder/Decoder, it focuses on use
of the RequestTemplate and Response objects, allowing us to extend them
in the future to support binary data without needing to change the
Encoder/Decoder signatures again.
Merge pull request #59 from davidmc24/simplify

Simplify Encoder/Decoder interfaces (was: add RequestEncoder/ResponseDecoder interfaces) (#53)
Fix default decoder's support for Response decoding, clean up usage of StringDecoder

Decoder.Default's decoding to Response didn't actually work; the reader would always
be closed when used from Feign, as it depended on the url connection, which would
have been closed by the time the Response object was returned to the client.

This wasn't noticed because the default decoder tests don't use the mock web server.
There will be test coverage added for this shortly as part of the enhancements to
support a Builder.
Merge pull request #64 from davidmc24/fix-default-decoder

Fix default decoder's support for Response decoding, clean up usage of S...