Make auto-generated c++ classes hermetic, intorudce CopyablePtr

This is the first step towards switching from libprotobuf to protozero.
This change makes the headers of auto-generated C++ core classes
independent from each other (i.e. if A has a nested field B,
A.h does not include anymore B.h, only the .cc does).
This CL breaks the header dependency turning
message-type fields from nested objects to heap-based pointers,
allowing to keep only the forward declaration in the header.
In order to do so this CL introduced a base::CopyablePtr<T> which
is a simple pointer wrapper, similar to unique_ptr, that behaves
like a std::vector<T> of fixed size = 1.
This CL also updates the code generator to use CopyablePtr.

Bug: 132880619
Test: perfetto_unittests --gtest_filter=CopyablePtrTest.* + builds
Change-Id: If71015a05740952353ea77b3a5af673f7f9dabf0
diff --git a/test/fake_producer.cc b/test/fake_producer.cc
index 993012c..944c8cb 100644
--- a/test/fake_producer.cc
+++ b/test/fake_producer.cc
@@ -28,6 +28,8 @@
 #include "perfetto/ext/tracing/core/trace_writer.h"
 #include "perfetto/trace/test_event.pbzero.h"
 #include "perfetto/trace/trace_packet.pbzero.h"
+#include "perfetto/tracing/core/data_source_config.h"
+#include "perfetto/tracing/core/test_config.h"
 
 namespace perfetto {