Respect struct fields with 'IDs' suffix when (un-)marshaling

When marshaling, `Foobars` takes precedence over `FoobarsIDs` when the
former is empty. When unmarshaling, only `FoobarsID` will be filled.

fixes #8