Buffet: utility function tweaks

Various tweakes to helper functions and classes, split off from
a larger CL that required them.

1. Added Error::AddToPrintf to help add formatted error messages.
2. Added Error::GetFirstError to get the innermost error occurred.
3. Added string_utils::ToString and swept code using std::to_string
   in order to ensure we format doubles correctly (using %g instead
   of %f format specifier) and bool values (using "true"/"false"
   instead of 1/0).
4. Fixed C-style cast in http_utils.h and using static_cast now.
5. Fixed a few linter warnings. Also since the linter was updated
   there is no reason to have some NOLINT since many C++11 features
   are now recognized properly by cpplint.

BUG=None
TEST=All unit tests pass.

Change-Id: I208ffaa3f0ec0a5ff78bf9e8151e784ec8cd77e2
Reviewed-on: https://chromium-review.googlesource.com/202962
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/string_utils.cc b/buffet/string_utils.cc
index 55c7d3f..8916e96 100644
--- a/buffet/string_utils.cc
+++ b/buffet/string_utils.cc
@@ -9,6 +9,7 @@
 #include <utility>
 
 #include <base/strings/string_util.h>
+#include <base/strings/stringprintf.h>
 
 namespace buffet {
 namespace string_utils {
@@ -36,7 +37,7 @@
 
   if (trim_whitespaces) {
     std::for_each(tokens.begin(), tokens.end(),
-                  [](std::string& str) {  // NOLINT(runtime/references)
+                  [](std::string& str) {
       base::TrimWhitespaceASCII(str, base::TRIM_ALL, &str); });
   }
 
@@ -86,5 +87,13 @@
   return str1 + delimiter + str2;
 }
 
+std::string ToString(double value) {
+  return base::StringPrintf("%g", value);
+}
+
+std::string ToString(bool value) {
+  return value ? "true" : "false";
+}
+
 }  // namespace string_utils
 }  // namespace buffet