Reland of Change base::Value::ListStorage to std::vector<base::Value>

The compilation on ChromeOS failed for the original CL
(http://crrev.com/2811673002), it is likely that a simple rebase fixes the
issue.

This patchset is equivalent to issue 2740143002 at patchset 14, simply another
rebase took place.

Original description follows:

This CL is a first step to inlining base::ListValue. It is proposed to use an
std::vector<base::Value> as the underlying ListStorage. This CL implements the
change and updates the code accordingly.

BUG=646113
TBR=brettw@chromium.org,rdevlin.cronin@chromium.org,flackr@chromium.org,skym@chromium.org,rsesek@chromium.org,bajones@chromium.org,dbeam@chromium.org,stevenjb@chromium.org
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel

Review-Url: https://codereview.chromium.org/2809023003
Cr-Original-Commit-Position: refs/heads/master@{#463684}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: a5676c607e107238b2d0cdd55e626c93669a92f1
diff --git a/tools/gn/command_desc.cc b/tools/gn/command_desc.cc
index 8e4ebd7..8dbe6de 100644
--- a/tools/gn/command_desc.cc
+++ b/tools/gn/command_desc.cc
@@ -39,7 +39,7 @@
   bool bool_value = false;
   if (value->GetAsList(&list_value)) {
     for (const auto& v : *list_value) {
-      PrintValue(v.get(), indentLevel);
+      PrintValue(&v, indentLevel);
     }
   } else if (value->GetAsString(&string_value)) {
     OutputString(indent);
diff --git a/tools/gn/commands.cc b/tools/gn/commands.cc
index 39dd079..e9691aa 100644
--- a/tools/gn/commands.cc
+++ b/tools/gn/commands.cc
@@ -515,7 +515,7 @@
   FilterAndPrintTargets(targets, &tmp);
   for (const auto& value : tmp) {
     std::string string;
-    value->GetAsString(&string);
+    value.GetAsString(&string);
     if (indent)
       OutputString("  ");
     OutputString(string);