- Rename ApiInvoker to ApiClient
- Make ApiClient pluggable by allowing setting the ApiClient field of
API classes
- Introduce a Configuration class, containing the default
ApiClient (which is also customizable)
- Move basePath from API class to ApiClient
- Change static methods in ApiClient to instance level
According to Android's docs (https://developer.android.com/reference/java/text/SimpleDateFormat.html)
the `SimpleDateFormat` class in Android does not accept `XXX` as the timezone, it uses `Z` instead.
Also updated the date time format of Android and Java clients to include milliseconds.
* Convert values to string for query/header/form parameters.
* For parameter of type Date, convert to ISO 8601 format.
* Also add utility methods to parse date in ISO 8601 format.
https://jersey.java.net/nonav/apidocs/1.8/jersey/com/sun/jersey/api/client/PartialRequestBuilder.html#header(java.lang.String, java.lang.Object)
We were running into issues with our headers not making it into our requests. Upon some research, it appears that Jersey's header() method returns the builder object, meaning we have to do this assignment to properly construct the request. After making the change, our requests work as expected.