Full type resolution from Gson.

There's a ton of code because we need to construct generic types.