Improvements to uses of base::SmallMap

Rename base::SmallMap to base::small_map.

Add a readme to base/containers to codify naming rules for containers.

Convert some uses of SmallMap to flat_map where appropriate.

Add an IPC serialization rule for flat_map (required by one of the SmallMap->flat_map conversions)

Improve the small_map documentation slightly.
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2825853002
Cr-Original-Commit-Position: refs/heads/master@{#465911}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: ca2ec763405c18960ad1ee66e5ac964a00c257e5
diff --git a/tools/gn/value.h b/tools/gn/value.h
index 3ce0117..3103509 100644
--- a/tools/gn/value.h
+++ b/tools/gn/value.h
@@ -120,7 +120,7 @@
  private:
   // This are a lot of objects associated with every Value that need
   // initialization and tear down every time. It might be more efficient to
-  // create a union of ManualConstructor objects (see SmallMap) and only
+  // create a union of ManualConstructor objects (see small_map) and only
   // use the one we care about.
   Type type_;
   std::string string_value_;