Make LogNamer copy a template header rather than modify an input

This sets us up much better for making it so LogNamer can decided when
to rotate to handle boot UUIDs changes.  We also have a bug hiding in
log_writer where we get duplicate headers written.  This will make that
a lot harder to do by accident once we've got all the tracking
simplified inside LogNamer.

Change-Id: Ib4a2eb5085e12f74c2c61c58d1f511fc2aeb85fa
Signed-off-by: Austin Schuh <austin.schuh@bluerivertech.com>
diff --git a/aos/events/logging/logger_test.cc b/aos/events/logging/logger_test.cc
index 7c89b15..a7d627d 100644
--- a/aos/events/logging/logger_test.cc
+++ b/aos/events/logging/logger_test.cc
@@ -171,9 +171,11 @@
     logger_event_loop->OnRun(
         [base_name1, base_name2, &logger_event_loop, &logger]() {
           logger.StartLogging(std::make_unique<LocalLogNamer>(
-              base_name1, logger_event_loop->node()));
+              base_name1, logger_event_loop->configuration(),
+              logger_event_loop->node()));
           EXPECT_DEATH(logger.StartLogging(std::make_unique<LocalLogNamer>(
-                           base_name2, logger_event_loop->node())),
+                           base_name2, logger_event_loop->configuration(),
+                           logger_event_loop->node())),
                        "Already logging");
         });
     event_loop_factory_.RunFor(chrono::milliseconds(20000));
@@ -204,7 +206,8 @@
     logger.set_polling_period(std::chrono::milliseconds(100));
     logger_event_loop->OnRun([base_name, &logger_event_loop, &logger]() {
       logger.StartLogging(std::make_unique<LocalLogNamer>(
-          base_name, logger_event_loop->node()));
+          base_name, logger_event_loop->configuration(),
+          logger_event_loop->node()));
       logger.StopLogging(aos::monotonic_clock::min_time);
       EXPECT_DEATH(logger.StopLogging(aos::monotonic_clock::min_time),
                    "Not logging right now");
@@ -240,13 +243,15 @@
     Logger logger(logger_event_loop.get());
     logger.set_separate_config(false);
     logger.set_polling_period(std::chrono::milliseconds(100));
-    logger.StartLogging(
-        std::make_unique<LocalLogNamer>(base_name1, logger_event_loop->node()));
+    logger.StartLogging(std::make_unique<LocalLogNamer>(
+        base_name1, logger_event_loop->configuration(),
+        logger_event_loop->node()));
     event_loop_factory_.RunFor(chrono::milliseconds(10000));
     logger.StopLogging(logger_event_loop->monotonic_now());
     event_loop_factory_.RunFor(chrono::milliseconds(10000));
-    logger.StartLogging(
-        std::make_unique<LocalLogNamer>(base_name2, logger_event_loop->node()));
+    logger.StartLogging(std::make_unique<LocalLogNamer>(
+        base_name2, logger_event_loop->configuration(),
+        logger_event_loop->node()));
     event_loop_factory_.RunFor(chrono::milliseconds(10000));
   }