Better deserialization of query results through the ExploreClient

Solving https://issues.cask.co/browse/CDAP-384:
Instead of including the type information in every cell of every row of results of a query, the ``ExploreClient`` re uses the information of type contained in the result schema, to better deserialize from Json to ``QueryResult`` objects.

Bamboo build: https://builds.cask.co/browse/CDAP-DUT123-1
If we want to use gson to deserialize, we would need to pass the schema of the query somehow to the custom ``TypeAdapter``. I don't see how this could be done - unless we can give some arguments to ``TypeAdapter``? For every ``QueryResult`` it tries to deserialize, it would need either the schema of the query, or its `handle` to actually make a REST call to retrieve the schema.
Because this logic seemed complex, I implemented this thing a level higher, where we always have an easy access to the schema.