Don't allow empty structs.

This is a GNU extension, and we’re lowballing right now, GNU extensions
can be considered later :)
Make names more specific.
Use more sensible name :)
Check for duplicate fields.
Only try to output to a file if we have something to output.
Correct field parse ordering.
Check for undefined types in fields.