Ensure endpoint definition Class is an interface.
Merge pull request #138 from square/jw/interfaces-only-bro

Ensure endpoint definition Class is an interface.
Abstract HTTP client behind interfaces.

Move the HTTP client implementation behind interfaces which allow
for its substitution. A `Client` is a one-method class which takes a
`Request` object, executes an HTTP request represented by it
synchronously, and returns a `Response` object representing the HTTP
response entirely.

Since this is such a fundamental change all of the tests which interact
with and verify the client have been rewritten from scratch.

This commit also changes two behaviors which were previously present:

 * Implicit, form-encoded request bodies are no longer supported. Extra
   `@Named` params on a method is now invalid.
 * Multi-part requests are no longer implicit. Methods which submit
   multi-part request bodies must be annotated with `@Multipart`.
Merge pull request #136 from square/jw/abstract-http-client

WIP: Client Agnostic
Provide access to the Response object directly and via Callback.

Update RetrofitError to use Response object as well.
Remove explicit MimeType class in favor of simple String.

The 'getFilename' method is only use by FileBodyPart class which doesn't get used in our code paths.
Merge pull request #143 from square/jw/response-object

Provide access to the Response object directly and via Callback.
Merge pull request #144 from square/jw/kill-all-mimes

Remove explicit MimeType class in favor of simple String.
Small tweaks.
Merge pull request #145 from square/jw/small

Small tweaks.
Merge branch 'master' of github.com:thorinside/retrofit