Check if a type’s fields can all be safely defaulted.
Primitives, strings, collections, Options, and Duration all have Default impls.
Named types (custom structs) only have Default if explicitly marked with has_default=true.
If any field is a Named type without has_default, returning true would generate
code that calls Default::default() on a type that doesn’t implement it.
Generate a Default impl for a non-opaque binding struct with has_default.
All fields use their type’s Default::default().
Optional fields use None instead of Default::default().
This enables the struct to be used with unwrap_or_default() in config constructors.