ABI break due to the lack of .importc in struct definitions
I've been recently struggling with a strange segmentation fault that was occuring in rapid/audio for seemingly no reason. After a little bit of debugging, I found out that the order of fields in Nim-bound structs vs C structs differs. Here's proof using GDB:
```
(gdb) n
126	  outstream.sample_rate = ROutputSampleRate
(gdb) p outstream
$5 = (tyObject_SoundIoOutStream__OKkCgy1bVSkwLimlF5TtWw *) 0x5555555e1ee0
(gdb) p *outstream
$6 = {device = 0x7fffec00cc50, format = 3, sample_rate = 0, layout = {name = 0x0, channel_count = 0, channels = {0 <repeats 15 times>, 93824992255547,
      93824992257383, 0, 0, 0, 0, 0, 0, 0}}, software_latency = 0, volume = 0, userdata = 0x0, write_callback = 0x0, underflow_callback = 0x0,
  error_callback = 0x0, name = 0x0, non_terminal_hint = 0 '\000', bytes_per_frame = 0, bytes_per_sample = 0, layout_error = 0}
(gdb) p (struct SoundIoOutStream)*outstream
$7 = {device = 0x7fffec00cc50, format = SoundIoFormatS16LE, sample_rate = 0, layout = {name = 0x0, channel_count = 0, channels = {
      SoundIoChannelIdInvalid <repeats 24 times>}}, software_latency = 0, volume = 0, userdata = 0x0, write_callback = 0x0,
  underflow_callback = 0x555555559e3b <default_underflow_callback>, error_callback = 0x55555555a567 <default_outstream_error_callback>, name = 0x0,
  non_terminal_hint = false, bytes_per_frame = 0, bytes_per_sample = 0, layout_error = 0}
(gdb) n
127	  outstream.software_latency = latency
(gdb) p (struct SoundIoOutStream)*outstream
$8 = {device = 0x7fffec00cc50, format = SoundIoFormatS16LE, sample_rate = 0, layout = {name = 0xbb80 <error: Cannot access memory at address 0xbb80>,
    channel_count = 0, channels = {SoundIoChannelIdInvalid <repeats 24 times>}}, software_latency = 0, volume = 0, userdata = 0x0,
  write_callback = 0x0, underflow_callback = 0x555555559e3b <default_underflow_callback>,
  error_callback = 0x55555555a567 <default_outstream_error_callback>, name = 0x0, non_terminal_hint = false, bytes_per_frame = 0,
  bytes_per_sample = 0, layout_error = 0}
```
As can be seen in the above debugger output, setting `sample_rate` from Nim actually sets `layout.name` in C!
My guess is that this is due to the lack of `{.importc.}` pragmas on the bound structs (I checked this using `cDebug()`). This probably causes problems because the Nim compiler's free to reorder fields as much as it wants (which it probably doesn't do, but GCC may do that). In the end, this causes an ABI break, and a segfault when trying to use soundio.

Here's the wrapper: https://github.com/liquid600pgm/rapid/blob/master/src/rapid/lib/soundio.nim
It used to work on older versions of Nimterop, it was likely broken by the AST2 refactoring, but I'm not entirely sure about that.