Split configuration into a separate file.

This saves space and CPU.  The configuration can't change (by design) in
a log file, so it was previously being duplicated.  In some cases with
lots of forwarded messages and nodes, rotating was triggering
recompression of enough configuration information that we were falling
behind.

Note: on purpose, we aren't storing a link from the log file to the
header.  We don't store links between parts either.  It up to the user
to provide the config in the list of files and folders provided.

Change-Id: I2cd600ed76c5f6f4b2bd6ba77d49bc739227756f
diff --git a/aos/flatbuffers.h b/aos/flatbuffers.h
index b751a4e..aa1e279 100644
--- a/aos/flatbuffers.h
+++ b/aos/flatbuffers.h
@@ -416,6 +416,16 @@
     return SizePrefixedFlatbufferDetachedBuffer<T>(fbb.Release());
   }
 
+  flatbuffers::DetachedBuffer Release() {
+    flatbuffers::FlatBufferBuilder fbb;
+    fbb.ForceDefaults(true);
+    const auto end = fbb.EndTable(fbb.StartTable());
+    fbb.Finish(flatbuffers::Offset<flatbuffers::Table>(end));
+    flatbuffers::DetachedBuffer result = fbb.Release();
+    std::swap(result, buffer_);
+    return result;
+  }
+
   // Returns references to the buffer, and the data.
   absl::Span<uint8_t> span() override {
     return absl::Span<uint8_t>(buffer_.data(), buffer_.size());