Add uma stats to help evaluate the impact of changes to the quota allocation logic.

This CL adds several Storage.BytesRead.XXX and Storage.BytesWritten.XXX histograms.
The size of each read or write is logged at a low level for:
CacheStorage, IndexedDB, ServiceWorker, and AppCache.

Storage.BytesXXX.LevelDBEnv.IDB corresponds to IndexedDB. Some other leveldb consumers
are also instrumented, for example LevelDBEnv.ServiceWorker, but not all of them are
differentiated from one another, they are logged as LevelDBEnv, and some aren't
instrumented at all.

Here are the labels...

<histogram_suffixes name="Storage.Bytes" separator=".">
  <suffix name="DiskCache.AppCache" label="AppCache usage."/>
  <suffix name="DiskCache.CacheStorage" label="CacheStorage usage."/>
  <suffix name="DiskCache.ServiceWorker"
      label="ServiceWorker scriptcache usage."/>
  <suffix name="LevelDBEnv" label="Undifferentiated leveldb usage."/>
  <suffix name="LevelDBEnv.IDB" label="IndexedDB usage."/>
  <suffix name="LevelDBEnv.ServiceWorker"
      label="ServiceWorker database usage."/>
  <suffix name="MojoLevelDBEnv" label="Mojo leveldb component usage."/>
  <affected-histogram name="Storage.BytesRead"/>
  <affected-histogram name="Storage.BytesWritten"/>
</histogram_suffixes>

BUG=605758

Review-Url: https://codereview.chromium.org/2858133002
Cr-Commit-Position: refs/heads/master@{#473752}
diff --git a/storage/common/BUILD.gn b/storage/common/BUILD.gn
index bf662abb..5f1b5e3 100644
--- a/storage/common/BUILD.gn
+++ b/storage/common/BUILD.gn
@@ -29,6 +29,8 @@
     "quota/quota_status_code.h",
     "quota/quota_types.h",
     "storage_common_export.h",
+    "storage_histograms.cc",
+    "storage_histograms.h",
   ]
 
   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.