Switch `int` and `uint` to `intptr_t` and `uintptr_t` respectively, or define `cintptr_t`/`cuintptr_t` types
### Summary

Make these stdint types available to nim programs for `importc` / `exportc` needs

### Description

In the [current implementation](https://github.com/nim-lang/Nim/blob/41c447b5f47e1b7cc798d1a0efb172a970fc0db7/lib/nimbase.h#L435), which integer type `Nim` uses depends on many things, but above all, it is not guaranteed to match the type used in `intptr_t` even if their definitions broadly aim to achieve the same thing in both nim and c.

This causes problems when trying to interop/importc with code that uses `intptr_t*` and similar pointers, since this may cause a type-based aliasing violation - on some platforms, `intptr_t` will be typedefed to  C `int`, `long` or `long long` depending on the memory model, and even if `int*` and `long*` are of the same size, it is not valid to access the same memory location via them - when there's a mismatch, platform-dependent violations happen.

There are a  few ways this can be addressed:

* use `intptr_t` and `uintptr_t` for Nim `int` and `uint` and document this in the manual - this can be conditioned on the use of a C99+ compiler and revert back to the currenty method for older c standards
* expose `cintptr_t` and `uintptr_t` as new integer types similar to `cint` - at that point, preferably _all_ [`stdint.h`](https://pubs.opengroup.org/onlinepubs/009604599/basedefs/stdint.h.html) types would be exposed like this
* both :)


### Alternatives

_No response_

### Examples

_No response_

### Backwards Compatibility

_No response_

### Links

_No response_