Previously, they would only only verify isa<DictionaryAttr> on such attrs
which resulted in crashes down the line from code assuming that the
verifier was doing the more thorough check introduced in this patch.
The key change here is for StructAttr to use
CPred<"$_self.isa<" # name # ">()"> instead of isa<DictionaryAttr>.
To test this, introduce struct attrs to the test dialect. Previously,
StructAttr was only being tested by unittests/, which didn't verify how
StructAttr interacted with ODS.
Why is the namespace necessary here? I wouldn't expect it to be.