[DevTools] Use base::span<const uint8_t> for devtools messages in content/public

The interfaces in content/public currently use const std::string& for
devtools messages. This requires client code as well as implementation
code to use an std::string for representing the messages (depending on the
code that's providing the const std::string&).

Moving to base::span allows code to use any container that gives
access to a sequence of bytes without having to make a copy, including:
- std::string (just like now)
- std::vector<uint8_t> (base::span<const uint8_t>'s implicit
  constructor takes it).
- the BigBuffer from Mojo (provides a base::span<const uint8_t> already).
- base::span<const uint8_t>
- crdtp::span<uint8_t> (base::span<const uint8_t>'s implicit
  constructor takes it).
- base::StringPiece (going to / from this one requires a reinterpret_cast,
  but at least it's efficient).

The switch removes a few copies of byte sequences (e.g. from BigBuffer
to std::string). It introduces a few conversions between
the non-owning representations, but these are cheap.

This PR includes a roll of third_party/inspector_protocol.
New revision is: 3b0551d3904f7fc067e78905ce697002187fa7a5

Change-Id: I4bea62307378f72ae95fa631db42c3bc95694d2e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1965407
Reviewed-by: Charlie Harrison <[email protected]>
Reviewed-by: Stephane Zermatten <[email protected]>
Reviewed-by: Josh Karlin <[email protected]>
Reviewed-by: Yusuf Ozuysal <[email protected]>
Reviewed-by: Istiaque Ahmed <[email protected]>
Reviewed-by: Ken Rockot <[email protected]>
Reviewed-by: Andrey Kosyakov <[email protected]>
Reviewed-by: Dmitry Gozman <[email protected]>
Commit-Queue: Johannes Henkel <[email protected]>
Cr-Commit-Position: refs/heads/master@{#726674}
53 files changed