types.nim improvements
- [x] A1: this should pull as few dependencies as needed by the wrapper (pay-for-what-you-use), one option is, for the types that carry a dependency, wrap the type declaration inside something like:
```
when defined(nimteropNeeds_va_list):
  type
    va_list* {.importc, header:"<stdarg.h>".} = object
```

- [x] A2: nimterop should replace the generated wrappers with the nim-idiomatic version, eg:
```
proc mylib(a: ptrdiff_t) => proc mylib(a: ByteAddress)
```

- [ ] A3: as needed, provide (platform specific) nim aliases which can be used eg to compute sizeof, eg:
```
type foo_t* {.importc, header: "<foo.h>".} = distinct int32
```
