pw_allocator: Allocator utility implementations.

This adds the basic implementation of a couple of allocator utilities
for Pigweed. Currently, this is just a Block class that supports
splitting and merging (mostly stolen from Keir :) ), and a super-basic
freelist implementation.

This should provide enough building blocks to build a small allocator on
top.

Change-Id: I328488e89ad734be004108483401cd7ccbaf2a51
diff --git a/pw_allocator/docs.rst b/pw_allocator/docs.rst
new file mode 100644
index 0000000..ae31c55
--- /dev/null
+++ b/pw_allocator/docs.rst
@@ -0,0 +1,19 @@
+.. _chapter-pw-allocator:
+
+.. default-domain:: cpp
+
+-----------
+pw_alloctor
+-----------
+
+This module provides various building blocks
+for a dynamic allocator. This is composed of the following parts:
+
+- ``block`` - An implementation of a linked list of memory blocks, supporting
+  splitting and merging of blocks.
+- ``freelist`` - A freelist, suitable for fast lookups of available memory
+  chunks (i.e. ``block``s)
+
+Note, this module, and its documentation, is currently incomplete and
+experimental.
+