MAINT: f2py: don't  generate code that triggers `-Wsometimes-uninitialized` (#20940)
MAINT: f2py: don't  generate code that triggers `-Wsometimes-uninitialized` (#20940)

* MAINT: f2py: don't  generate code that triggers `-Wsometimes-uninitialized`

Warnings look like:

```
scipy/linalg/_flapackmodule.c:2200:9: warning: variable 'return_value' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
    if (capi_j>capi_i)
        ^~~~~~~~~~~~~
scipy/linalg/_flapackmodule.c:2217:12: note: uninitialized use occurs here
    return return_value;
           ^~~~~~~~~~~~
scipy/linalg/_flapackmodule.c:2200:5: note: remove the 'if' if its condition is always true
    if (capi_j>capi_i)
    ^~~~~~~~~~~~~~~~~~
scipy/linalg/_flapackmodule.c:2099:21: note: initialize the variable 'return_value' to silence this warning
    int return_value;
                    ^
                     = 0
```

Also:

- Initialize complex return value.
- Warn on non-void callback returning None.
- Use brackets in if-else block.

This makes the code more readable.

Co-authored-by: Pearu Peterson <e038d31cea77644792bad0f19ca6ca1883888fb4@gmail.com>
rgommers/numpy,anntzer/numpy,numpy/numpy,endolith/numpy,endolith/numpy,jakirkham/numpy,rgommers/numpy,charris/numpy,jakirkham/numpy,seberg/numpy,numpy/numpy,pdebuyl/numpy,charris/numpy,mhvk/numpy,mhvk/numpy,anntzer/numpy,rgommers/numpy,pdebuyl/numpy,pdebuyl/numpy,pdebuyl/numpy,numpy/numpy,rgommers/numpy,anntzer/numpy,jakirkham/numpy,mhvk/numpy,seberg/numpy,mhvk/numpy,mhvk/numpy,jakirkham/numpy,jakirkham/numpy,mattip/numpy,seberg/numpy,endolith/numpy,mattip/numpy,anntzer/numpy,endolith/numpy,charris/numpy,numpy/numpy,charris/numpy,seberg/numpy,mattip/numpy,mattip/numpy