[build] Remove <uses-sdk> and specify [min|target|max]SdkVersion in GN

GN already has the concept of a minSdkVersion. This CL adds target- and
maxSdkVersion and makes GN the source of truth by removing the
<uses-sdk> element from all manifests. There are three steps that
require [min|target|max]SdkVersion: linting, manifest merging and
resource compilation. Each of these steps get the versions passed from
GN. Furthermore, manifest merging removes the SDK version from the
output manifest so that GN stays the source of truth.

+ Add a manifest_utils to unify manifest parsing, rewriting, etc. in a
  single place.

+ Move manifest verification to compile resources steps, where the final
  manifest is written.

This CL adds some temporary workarounds to keep downstream working.
Those will be removed once downstream is updated.

Bug: 891996
Change-Id: If24be69d9c6b03a0d2423fad830a4da375d68505
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1650265
Reviewed-by: Peter Kotwicz <pkotwicz@chromium.org>
Reviewed-by: Simeon Anfinrud <sanfin@chromium.org>
Reviewed-by: Yuchen Liu <yucliu@chromium.org>
Reviewed-by: Misha Efimov <mef@chromium.org>
Reviewed-by: Richard Coles <torne@chromium.org>
Reviewed-by: Ted Choc <tedchoc@chromium.org>
Reviewed-by: Eric Stevenson <estevenson@chromium.org>
Reviewed-by: Peter Wen <wnwen@chromium.org>
Commit-Queue: Tibor Goldschwendt <tiborg@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#669810}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: 95db95d387baeeb6544eb1193310eb5603c30ebc
8 files changed