[GN] Add JSON project writer

Output is a JSON file containing information about targets. The generator
can also optionally invoke a python script on generated file.

Example:
gn gen --ide=json ./out-json --json-ide-script=//scripts/custom-ide-generator.py \
    --ison-ide-script-args="additional script arguments"

Also implements --format=json for gn desc as described in https://bugs.chromium.org/p/chromium/issues/detail?id=620132

BUG=

Review-Url: https://codereview.chromium.org/2064533002
Cr-Original-Commit-Position: refs/heads/master@{#406064}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: d2edeb9a743ad5a2046e655997277d3bb630db03
12 files changed
tree: 8e591260be9002124fc1fde2edb00856d4e6f83d
  1. tools/