Easier to read check warnings
Pull out and parse __attribute__ before folding a type

This means we have attributes available for e.g. function folding, such
as __attribute__((nonnull)) checks in fold_funcargs().
Pass down the last attribute when folding types

This allows for types such as { attr, .ref = { funcargs, .ref = ... }}
i.e. the sub-function-type can receive an attribute for itself.