Add multinode maps and type specific maps.

This lets us do things like remap timing reports per node and handle
them correctly.  And also only map the timing reports and not everything
on /aos.  This also becomes more interesting when AOS_LOG logs, and we
have a starter which publishes statistics.

Change-Id: I2147e3b722b472d4480c86e7c8acda938aa3d1d2
diff --git a/aos/configuration.h b/aos/configuration.h
index 5d4a79b..f2cf499 100644
--- a/aos/configuration.h
+++ b/aos/configuration.h
@@ -37,16 +37,17 @@
 //
 // If the application name is empty, it is ignored.  Maps are processed in
 // reverse order, and application specific first.
-const Channel *GetChannel(
-    const Configuration *config, const std::string_view name,
-    const std::string_view type,
-    const std::string_view application_name);
-inline const Channel *GetChannel(
-    const Flatbuffer<Configuration> &config,
-    const std::string_view name,
-    const std::string_view type,
-    const std::string_view application_name) {
-  return GetChannel(&config.message(), name, type, application_name);
+const Channel *GetChannel(const Configuration *config,
+                          const std::string_view name,
+                          const std::string_view type,
+                          const std::string_view application_name,
+                          const Node *node);
+inline const Channel *GetChannel(const Flatbuffer<Configuration> &config,
+                                 const std::string_view name,
+                                 const std::string_view type,
+                                 const std::string_view application_name,
+                                 const Node *node) {
+  return GetChannel(&config.message(), name, type, application_name, node);
 }
 
 // Returns the Node out of the config with the matching name, or nullptr if it
@@ -64,6 +65,9 @@
 // provided node.
 bool ChannelIsReadableOnNode(const Channel *channel, const Node *node);
 
+// Prints a channel to json, but without the schema.
+std::string CleanedChannelToString(const Channel *channel);
+
 // TODO(austin): GetSchema<T>(const Flatbuffer<Configuration> &config);
 
 // Returns the "root directory" for this run. Under linux, this is the