To construct struct syntax, this patch first specialized type
inheritance clause. For protocol's class requirement, we currently
treat it as an unknown type.
This patch also teaches SyntaxParsingContext to collect syntax nodes
from back in place. This is useful to squash multiple decl modifiers
for declarations like function. This is not used for struct declaration
because only accessibility modifier is allowed.
* Serialize TopLevelDecls as an array of raw syntax nodes, instead of one-after-another.
* Add tests for multiple decls
* Remove extra newlines from test inputs