pw_kvs: Replace string_view with custom type

Create a new type 'Key' which behaves the same as string_view but
doesn't require C++17.

Test: Passes all tests.
Change-Id: I2ebadbb0405f3fa3520dad46ea500cafe652f230
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/27140
Reviewed-by: Wyatt Hepler <hepler@google.com>
Commit-Queue: Rob Oliver <rgoliver@google.com>
diff --git a/pw_kvs/BUILD.gn b/pw_kvs/BUILD.gn
index fedc32e..407c2fa 100644
--- a/pw_kvs/BUILD.gn
+++ b/pw_kvs/BUILD.gn
@@ -40,6 +40,7 @@
     "public/pw_kvs/flash_test_partition.h",
     "public/pw_kvs/format.h",
     "public/pw_kvs/io.h",
+    "public/pw_kvs/key.h",
     "public/pw_kvs/key_value_store.h",
   ]
   sources = [
@@ -236,6 +237,7 @@
     ":key_value_store_map_test",
     ":fake_flash_test_key_value_store_test",
     ":sectors_test",
+    ":key_test",
     ":key_value_store_wear_test",
   ]
 }
@@ -385,6 +387,11 @@
   sources = [ "sectors_test.cc" ]
 }
 
+pw_test("key_test") {
+  deps = [ ":pw_kvs" ]
+  sources = [ "key_test.cc" ]
+}
+
 pw_test("key_value_store_wear_test") {
   deps = [
     ":fake_flash",