Add JSON view for blame

Similar to how we use SoyMapData/SoyListData directly to avoid
unnecessary allocation in the HTML path, use a custom type adapter
for JSON serialization rather than converting objects needlessly.

Ranges are specified as (start, count) using 1-based numbering, which
matches "git blame" and "diff -u" (but not JGit).

Change-Id: I4b359cc4b8a4e26c2bfcabfa65c6083829518756
5 files changed