pw_kvs: Implement CRC16 checksum for KVS

- Create CRC16 implementation of pw::kvs::ChecksumAlgorithm.
- Add tests for the ChecksumAlgorithm class.

Change-Id: I3d7268e49c4eec06d61e113602ce24c05a3b0fa0
diff --git a/pw_kvs/BUILD b/pw_kvs/BUILD
index 5433285..69a13ec 100644
--- a/pw_kvs/BUILD
+++ b/pw_kvs/BUILD
@@ -33,6 +33,7 @@
     ],
     hdrs = [
         "public/pw_kvs/checksum.h",
+        "public/pw_kvs/crc16_checksum.h",
         "public/pw_kvs/flash_memory.h",
         "public/pw_kvs/in_memory_fake_flash.h",
         "public/pw_kvs/key_value_store.h",
@@ -45,10 +46,33 @@
     ],
 )
 
+pw_cc_library(
+    name = "crc16",
+    hdrs = [
+        "public/pw_kvs/crc16_checksum.h",
+    ],
+    deps = [
+        ":pw_kvs",
+        "//pw_checksum",
+    ],
+)
+
+pw_cc_test(
+    name = "checksum_test",
+    srcs = ["checksum_test.cc"],
+    deps = [
+        ":crc16",
+        ":pw_kvs",
+        "//pw_checksum",
+        "//pw_log",
+    ],
+)
+
 pw_cc_test(
     name = "key_value_store_test",
     srcs = ["key_value_store_test.cc"],
     deps = [
+        ":crc16",
         ":pw_kvs",
         "//pw_checksum",
         "//pw_log",