cppgen: Don't require full submessage definitions in gen headers
cppgen: Don't require full submessage definitions in gen headers

Previously it wasn't possible to include a gen-header for a message
containing repeated fields of submessages without also including the
full definitions of those submessages. This is because vector accessors
(e.g., field_size()) need to have the full definition of the repeated
type, even if that accessor isn't called.

InternedData is an example of a message affected by this problem. Trying
to include interned_data.gen.h in Chrome meant having to include the
definitions of all submessages first (e.g., source_location.gen.h). If
someone added a new field upstream, that breaks the build in Chrome.

This patch fixes the problem by moving the definitions of repeated field
accessors from gen.h to gen.cc.

Bug: 156727531
Change-Id: Ic1f43b6a75a44f6ca98fa58b8b7b13a4f74fd5d5
google/perfetto,google/perfetto,google/perfetto,google/perfetto,google/perfetto,google/perfetto,google/perfetto,google/perfetto