This change allows now having these variables as array sizes that
are not Variable Length Arrays like in structs for example.
To note however that this changes the type from unsigned int to an
implementation defined type which usually `int` which is signed and
not unsigned.
`sfFtpDirectoryResponse_getDirectory` can fail and return NULL becuase 'strdup' returns null on failure but `sfFtpDirectoryResponse_getDirectoryUnicode` didn't and just had UB due not checking return value of malloc.
typing NULL in the docs made me age 30 years btw
this pr also makes `sfSoundRecorder_getAvailableDevices` return a const pointer to a const char pointer so you can no longer modify where the pointers of the strings are pointing into becuase it doesn't make sense.