libchromeos: Replace char with std::string in string_utils API

std::string version of functions is enough to cover char use cases.
C library was replaced with STL in Split and SplitAtFirst implementations.
Added support of splitting by empty string. Uses but reasonable implementation
is simple.

BUG=none
TEST=unittests

Change-Id: I0778722d31a7b06eea2227b4d94991ab194195cb
Reviewed-on: https://chromium-review.googlesource.com/258640
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/commands/command_queue_unittest.cc b/buffet/commands/command_queue_unittest.cc
index 97431b8..12c5500 100644
--- a/buffet/commands/command_queue_unittest.cc
+++ b/buffet/commands/command_queue_unittest.cc
@@ -52,7 +52,7 @@
   // command queue.
   std::string GetIDs() const {
     using chromeos::string_utils::Join;
-    return Join(',', std::vector<std::string>(ids_.begin(), ids_.end()));
+    return Join(",", std::vector<std::string>(ids_.begin(), ids_.end()));
   }
 
  private:
@@ -107,7 +107,7 @@
   queue.Add(CreateDummyCommandInstance("base.reboot", id2));
   std::set<std::string> ids{id1, id2};  // Make sure they are sorted properly.
   std::string expected_set = chromeos::string_utils::Join(
-      ',', std::vector<std::string>(ids.begin(), ids.end()));
+      ",", std::vector<std::string>(ids.begin(), ids.end()));
   EXPECT_EQ(expected_set, dispatch.GetIDs());
   queue.Remove(id1);
   EXPECT_EQ(id2, dispatch.GetIDs());