Reorganize histograms for persistence.

This is split from cl/1425533011.  It does all the base work
to support holding histograms in persistent memory including
moving some files so they'll be accessible and separating
metadata for external storage.

BUG=546019
TBR=danakj
(for trivial change to base/test/histogram_tester.cc)

Review URL: https://codereview.chromium.org/1471073007

Cr-Commit-Position: refs/heads/master@{#364408}
diff --git a/base/metrics/sample_vector_unittest.cc b/base/metrics/sample_vector_unittest.cc
index fd42376..8bd80dd0 100644
--- a/base/metrics/sample_vector_unittest.cc
+++ b/base/metrics/sample_vector_unittest.cc
@@ -20,7 +20,7 @@
   ranges.set_range(0, 1);
   ranges.set_range(1, 5);
   ranges.set_range(2, 10);
-  SampleVector samples(&ranges);
+  SampleVector samples(1, &ranges);
 
   samples.Accumulate(1, 200);
   samples.Accumulate(2, -300);
@@ -50,7 +50,7 @@
   ranges.set_range(3, 3);
   ranges.set_range(4, INT_MAX);
 
-  SampleVector samples1(&ranges);
+  SampleVector samples1(1, &ranges);
   samples1.Accumulate(0, 100);
   samples1.Accumulate(2, 100);
   samples1.Accumulate(4, 100);
@@ -58,7 +58,7 @@
   EXPECT_EQ(300, samples1.TotalCount());
   EXPECT_EQ(samples1.redundant_count(), samples1.TotalCount());
 
-  SampleVector samples2(&ranges);
+  SampleVector samples2(2, &ranges);
   samples2.Accumulate(1, 200);
   samples2.Accumulate(2, 200);
   samples2.Accumulate(4, 200);
@@ -91,7 +91,7 @@
   // [0, 1) [1, 2) [2, 4) [4, 8) [8, 16) [16, 32) [32, 64) [64, INT_MAX)
   BucketRanges ranges(9);
   Histogram::InitializeBucketRanges(1, 64, &ranges);
-  SampleVector samples(&ranges);
+  SampleVector samples(1, &ranges);
 
   // Normal case
   samples.Accumulate(0, 1);
@@ -113,7 +113,7 @@
   ranges2.set_range(0, 1);
   ranges2.set_range(1, 5);
   ranges2.set_range(2, 10);
-  SampleVector samples2(&ranges2);
+  SampleVector samples2(2, &ranges2);
 
   // Normal case.
   samples2.Accumulate(1, 1);
@@ -134,7 +134,7 @@
   ranges1.set_range(0, 1);
   ranges1.set_range(1, 3);
   ranges1.set_range(2, 5);
-  SampleVector samples1(&ranges1);
+  SampleVector samples1(1, &ranges1);
 
   // Custom buckets 2: [0, 1) [1, 3) [3, 6) [6, 7)
   BucketRanges ranges2(5);
@@ -143,7 +143,7 @@
   ranges2.set_range(2, 3);
   ranges2.set_range(3, 6);
   ranges2.set_range(4, 7);
-  SampleVector samples2(&ranges2);
+  SampleVector samples2(2, &ranges2);
 
   samples2.Accumulate(1, 100);
   samples1.Add(samples2);
@@ -209,7 +209,7 @@
   EXPECT_TRUE(it.Done());
 
   // Create iterator from SampleVector.
-  SampleVector samples(&ranges);
+  SampleVector samples(1, &ranges);
   samples.Accumulate(0, 0);
   samples.Accumulate(1, 1);
   samples.Accumulate(2, 2);
@@ -239,7 +239,7 @@
   ranges.set_range(2, 2);
   ranges.set_range(3, 3);
   ranges.set_range(4, INT_MAX);
-  SampleVector samples(&ranges);
+  SampleVector samples(1, &ranges);
 
   scoped_ptr<SampleCountIterator> it = samples.Iterator();