generate JSON respecting data type

Hi javalite team,
I am not sure why Model#toJson prints out every attribute in String form,
also not sure why "model_class" is needed (it's not even used in Model#fromMap when I try to rebuild the model from JSON string).

This patch tries to print JSON according json.org spec, also fixed an existing String escape bug.
But this still ignores all binary data types, it could be better to refactor Model#toJson and LazyList#toJson with Jackson JSON generation.

With current Model#toJson behaviour, I think I am not the only one having trouble in client side Javascript coding.
Please consider whether this patch is appropriate.

Chunpeng