Splitted Flatten Syntax in two.

This pull request is just about splitting FlattenSyntax into two classes, one which only flattens the terms and the other which only flattens syntax declarations.
At the moment, FlattenSyntax calls the FlattenTerms transformer when transforming a definition.  To actually split them we need a discussion about how do we handle the succession of transformations for 7-8 backends we have, which all seem to differ one from another in the current steeps before FlattenSyntax.