core: simplify mutex signatures

Fixes #1436
The construct `{ .val = 0, .queue = … }` is illegal in C++. With field names omitted it is legal C and C++.