Traverse collections when auto-including reflection headers
Traverse collections when auto-including reflection headers

Summary:
[Thrift] Traverse collections when auto-including reflection headers.

The idea is that if we have:

```name=foo.thrift
include "bar.thrift"

struct Foo {
  1: list<bar.Bar> bars,
}
```

Then `gen-cpp2/foo_fatal_types.h` should include `gen-cpp2/bar_fatal_types.h` (or equivalent). And so on with the other collection types, and typedefs.

Reviewed By: juchem

Differential Revision: D4419949

fbshipit-source-id: 1b85403f4a8cb5c6e41708e275a94d7cbac92028

getyourguide/fbthrift,getyourguide/fbthrift,getyourguide/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,facebook/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,SergeyMakarenko/fbthrift,getyourguide/fbthrift,getyourguide/fbthrift,SergeyMakarenko/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,getyourguide/fbthrift,SergeyMakarenko/fbthrift,getyourguide/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,SergeyMakarenko/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,SergeyMakarenko/fbthrift,getyourguide/fbthrift,facebook/fbthrift,getyourguide/fbthrift,getyourguide/fbthrift,facebook/fbthrift,facebook/fbthrift,getyourguide/fbthrift,SergeyMakarenko/fbthrift,SergeyMakarenko/fbthrift,getyourguide/fbthrift