[RDY] Improve unit testing infrastructure

With this PR we can now:

- Test static functions
- Mock functions for testing(see the find_locales example)

This is done by merging the files in the nvim/test-helpers directory with the corresponding module. Since the file is included in the automatically generated static header, we can "override" functions by using macros with the same name.

I also started work for removing `os_call_shell` in favor of `os_system`, which will require refactoring all functions that call it indirectly. There's still one more usage of `get_cmd_output` but I will remove in another PR
could do this instead:

```c
  if (os_system("locale -a", NULL, 0, &locale_a, &nread) || locale_a == NULL) {
    return NULL;
  }
```