Use starterd to pre-allocate all AOS message queue shared memory.

AOS uses shared memory for intranode message channels.  The first
application that creates a sender/fetcher/watcher for each channel
allocates the shared memory for the message queues, and is given credit
for the shared memory as part of its memory footprint.
The non-deterministic launch order of all the shasta applications means
that the measured memory footprint of many of the processes can vary
greatly, depending on where it was in the launch order that time.
As a result, the memory_limit values in the config files are way
bigger than they need to be, if we could have deterministic measurements
of the actual memory usage of each process.

The starterd process is what actually spawns all the processes, using
the configuration data.  Making this process create MemoryMappedQueues
for every intranode channel on its node will pre-allocate all the
message queue shared memory, which dramatially reduces the measured
memory usage of most of the processes it spawns, and makes those numbers
much more deterministic.

Renamed MMappedQueue to MemoryMappedQueue and moved it from
shm_event_loop.cc to new source files in the lockless_queue library.
Update starterd_lib to identify all channels in the config that are
readable on this node and allocate MemoryMappedQueues for each.

Change-Id: I40649b61653968495ba616b72f95d799a8e06414
Signed-off-by: Brian J Griglak <brian.griglak@bluerivertech.com>
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/ipc_lib/BUILD b/aos/ipc_lib/BUILD
index ef6c4f3..381a273 100644
--- a/aos/ipc_lib/BUILD
+++ b/aos/ipc_lib/BUILD
@@ -168,14 +168,19 @@
     srcs = [
         "lockless_queue.cc",
         "lockless_queue_memory.h",
+        "memory_mapped_queue.cc",
     ],
-    hdrs = ["lockless_queue.h"],
+    hdrs = [
+        "lockless_queue.h",
+        "memory_mapped_queue.h",
+    ],
     target_compatible_with = ["@platforms//os:linux"],
     visibility = ["//visibility:public"],
     deps = [
         ":aos_sync",
         ":data_alignment",
         ":index",
+        "//aos:configuration",
         "//aos:realtime",
         "//aos:uuid",
         "//aos/time",