Refactorings + generic return types + proper Jackson configuration + more

Initially, I just wanted to fix the deserialization to support methods with generic return types, but then I stumbled across more issues and ended up with doing some refactorings to the core and with a few other improvements/bugfixes, so I'll be happy to get it included in the main branch. :-)

Please review the last bugfix I mentioned in the commit description, i.e. the Params.asFormEncodedRequestBody method. For me, it seems almost like if the request body was returned not-URL-encoded on purpose until now, but AFAIK, that is not correct and should be the same as with the query string encoding. But maybe I'm just overlooking something and missing the point of this method?