[WIP] 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
Why are you returning one value here in place of two values? Lua supports multiple returns and assigning two variables at once.