Fixtype of struct and record declarations.
This is a product type introduced by fty::defprod.
A struct declaration consists of a name (identifier) and a list of struct component declarations. We do not require the list to be non-empty, at the abstract syntax level.
We also include a boolean flag that says whether the struct type is a record type or not. If the flag is set, we do not require, at the level of abstract syntax, that it has the required components for records; instead, this is enforced in the static semantics.