Generate typedefs for cpp.type before forward declarations
Generate typedefs for cpp.type before forward declarations

Summary:
Before:
```
typedef std::unordered_map<int, xx::A> MapA;
class A;
```

After:
```
class A;
typedef std::unordered_map<int, xx::A> MapA;
```

Test Plan:
https://phabricator.fb.com/D1288386 works, and watch
contbuilt

Reviewed By: davejwatson@fb.com

FB internal diff: D1289520


facebook/fbthrift,chjp2046/fbthrift,soumith/fbthrift,jesboat/fbthrift,raphaelamorim/fbthrift,uber/fbthrift,uber/fbthrift,LinusU/fbthrift,sinjar666/fbthrift,raphaelamorim/fbthrift,HankFaan/fbthrift,guker/fbthrift,maxwell-demon/fbthrift,SergeyMakarenko/fbthrift,HankFaan/fbthrift,raphaelamorim/fbthrift,project-zerus/fbthrift,raphaelamorim/fbthrift,HankFaan/fbthrift,Orvid/fbthrift,chjp2046/fbthrift,soumith/fbthrift,project-zerus/fbthrift,guker/fbthrift,maxwell-demon/fbthrift,Orvid/fbthrift,LinusU/fbthrift,kangkot/fbthrift,kangkot/fbthrift,project-zerus/fbthrift,getyourguide/fbthrift,guker/fbthrift,SergeyMakarenko/fbthrift,raphaelamorim/fbthrift,getyourguide/fbthrift,facebook/fbthrift,project-zerus/fbthrift,project-zerus/fbthrift,kangkot/fbthrift,LinusU/fbthrift,SergeyMakarenko/fbthrift,chjp2046/fbthrift,LinusU/fbthrift,fengshao0907/fbthrift,facebook/fbthrift,kangkot/fbthrift,facebook/fbthrift,guker/fbthrift,project-zerus/fbthrift,fengshao0907/fbthrift,chjp2046/fbthrift,fengshao0907/fbthrift,LinusU/fbthrift,jesboat/fbthrift,sinjar666/fbthrift,maxwell-demon/fbthrift,fengshao0907/fbthrift,facebook/fbthrift,uber/fbthrift,guker/fbthrift,raphaelamorim/fbthrift,jesboat/fbthrift,uber/fbthrift,HankFaan/fbthrift,jesboat/fbthrift,soumith/fbthrift,maxwell-demon/fbthrift,guker/fbthrift,maxwell-demon/fbthrift,kangkot/fbthrift,Orvid/fbthrift,getyourguide/fbthrift,getyourguide/fbthrift,uber/fbthrift,Orvid/fbthrift,LinusU/fbthrift,Orvid/fbthrift,getyourguide/fbthrift,kangkot/fbthrift,Orvid/fbthrift,fengshao0907/fbthrift,kangkot/fbthrift,SergeyMakarenko/fbthrift,sinjar666/fbthrift,SergeyMakarenko/fbthrift,HankFaan/fbthrift,chjp2046/fbthrift,HankFaan/fbthrift,uber/fbthrift,guker/fbthrift,project-zerus/fbthrift,sinjar666/fbthrift,facebook/fbthrift,maxwell-demon/fbthrift,uber/fbthrift,project-zerus/fbthrift,Orvid/fbthrift,project-zerus/fbthrift,chjp2046/fbthrift,kangkot/fbthrift,chjp2046/fbthrift,jesboat/fbthrift,getyourguide/fbthrift,getyourguide/fbthrift,fengshao0907/fbthrift,Orvid/fbthrift,sinjar666/fbthrift,chjp2046/fbthrift,raphaelamorim/fbthrift,uber/fbthrift,soumith/fbthrift,Orvid/fbthrift,soumith/fbthrift,SergeyMakarenko/fbthrift,facebook/fbthrift,raphaelamorim/fbthrift,HankFaan/fbthrift,HankFaan/fbthrift,getyourguide/fbthrift,raphaelamorim/fbthrift,kangkot/fbthrift,sinjar666/fbthrift,fengshao0907/fbthrift,soumith/fbthrift,maxwell-demon/fbthrift,jesboat/fbthrift,sinjar666/fbthrift,jesboat/fbthrift,project-zerus/fbthrift,SergeyMakarenko/fbthrift,uber/fbthrift,soumith/fbthrift,guker/fbthrift,HankFaan/fbthrift,guker/fbthrift,sinjar666/fbthrift,uber/fbthrift,SergeyMakarenko/fbthrift,chjp2046/fbthrift,maxwell-demon/fbthrift,jesboat/fbthrift,kangkot/fbthrift,jesboat/fbthrift,soumith/fbthrift,project-zerus/fbthrift,LinusU/fbthrift,chjp2046/fbthrift,getyourguide/fbthrift,raphaelamorim/fbthrift,kangkot/fbthrift,Orvid/fbthrift,jesboat/fbthrift,fengshao0907/fbthrift,LinusU/fbthrift,soumith/fbthrift,project-zerus/fbthrift,chjp2046/fbthrift,chjp2046/fbthrift,raphaelamorim/fbthrift,jesboat/fbthrift,SergeyMakarenko/fbthrift,sinjar666/fbthrift,facebook/fbthrift,HankFaan/fbthrift,maxwell-demon/fbthrift,uber/fbthrift,jesboat/fbthrift,facebook/fbthrift,SergeyMakarenko/fbthrift,guker/fbthrift,uber/fbthrift,maxwell-demon/fbthrift,maxwell-demon/fbthrift,Orvid/fbthrift,fengshao0907/fbthrift,SergeyMakarenko/fbthrift,getyourguide/fbthrift,sinjar666/fbthrift,guker/fbthrift,LinusU/fbthrift,getyourguide/fbthrift,sinjar666/fbthrift,LinusU/fbthrift,LinusU/fbthrift,soumith/fbthrift,fengshao0907/fbthrift,getyourguide/fbthrift,HankFaan/fbthrift,fengshao0907/fbthrift,soumith/fbthrift,SergeyMakarenko/fbthrift