Add InspectorAgentState for incremental state updates (Value).

Add the following abstractions:
- A mojom struct, DevToolsSessionState, which is used
  to send the state to the inspector session in the
  renderer, and to receive incremental updates from it
  (see agent_state.mojom).
- InspectorSessionState, which interprets the session
  state received from the browser so that individual
  properties in the agents (modeled as fields, see below)
  can be initialized. This object also collects the
  updates incurred during field mutations.
- InspectorAgentState, which connects the fields in the
  agents to the session state.
- Fields in the inspector agent classes. These fields
  are Boolean, Integer, Double, String, and 1 level
  maps from String to any of these.

For now I've only modified InspectorPageAgent, so the old
session state is still there in parallel. Will work on editing
the remaining agents.

This is a variant of
https://chromium-review.googlesource.com/c/chromium/src/+/1147929
which uses protocol::Value to encode the fundamental values stored
in the session state.

Change-Id: I2c2aa1354884ab6420bac764fbca8497f4785ad1
Reviewed-on: https://chromium-review.googlesource.com/1149201
Commit-Queue: Johannes Henkel <johannes@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Andrey Kosyakov <caseq@chromium.org>
Reviewed-by: Pavel Feldman <pfeldman@chromium.org>
Cr-Commit-Position: refs/heads/master@{#578514}
17 files changed