pw_containers: Add intrusive singly linked list

Add a intrusive singly linked list implementation that does not require
dynamic memory allocation.

Change-Id: Id572d4611d699106fc6367f5008cd01744a5c578
diff --git a/pw_containers/BUILD b/pw_containers/BUILD
index 3252a5f..0e2af8c 100644
--- a/pw_containers/BUILD
+++ b/pw_containers/BUILD
@@ -24,6 +24,27 @@
 
 pw_cc_library(
     name = "pw_containers",
+    deps = [
+        ":vector",
+        ":intrusive_list",
+    ],
+)
+
+pw_cc_library(
+    name = "intrusive_list",
+    deps = [ "//pw_assert" ],
+    srcs = [
+        "intrusive_list.cc",
+        "public/pw_containers/internal/intrusive_list_impl.h",
+    ],
+    hdrs = [
+        "public/pw_containers/intrusive_list.h",
+    ],
+    includes = ["public"],
+)
+
+pw_cc_library(
+    name = "vector",
     hdrs = [
         "public/pw_containers/vector.h",
     ],
@@ -40,3 +61,14 @@
         "//pw_unit_test",
     ],
 )
+
+pw_cc_test(
+    name = "intrusive_list_test",
+    srcs = [
+        "intrusive_list_test.cc",
+    ],
+    deps = [
+        ":intrusive_list",
+        "//pw_unit_test",
+    ],
+)