Creating this patch according to George suggestion here
https://reviews.llvm.org/D19976
This patch moves output section creation from Writer<ELFT> to LinkerScript<ELFT>.
Input section order in linker script is respected and can be different from section order in input files.
All lld unit tests pass successfully without modification
The main goal of this patch is to give a go to https://reviews.llvm.org/D22215
and many other unsupported features (like symbol assignment, PROVIDE, PROVIDE_HIDDEN, e.t.c)
I think it is not in common in lld code to declare new type in globals.