API Fixes: Setup test infrastructure

Add a basic framework for writing API tests, not only increasing overall
coverage, but also helping verify that client libraries for other platforms are
in sync with the latest API changes
API Fixes: Fix wrong loop in vim_list_runtime_paths
API Fixes: Use macro for initializing all arrays
API Fixes: Use 0-terminated string in vim_strwidth

While the mb_string2cells function accepts a length parameter, it only seems to
work properly when a 0-terminated strings, since valgrind reports a conditional
jump that depends on uninitialized values(means it reads after the string
boundaries which could result in overflows)
API Fixes: Terminate directory string in vim_change_directory
API Fixes: Python client: Add tests for vim.chdir
API Fixes: Python client: Add tests for vim.current.line
API Fixes: Python client: Add tests for vim.vars
API Fixes: Python client: Add tests for vim.options
API Fixes: Python client: Add tests for vim.buffers/current.buffer
API Fixes: Python client: Add tests for vim.windows/current.window
API Fixes: Python client: Add tests for vim.tabpages/current.tabpage
API Fixes: Python client: Add tests for buffer length
API Fixes: Python client: Add tests for buffer get/set/del line
API Fixes: Python client: Add tests for buffer get/set/del slice
API Fixes: Python client: Add tests for buffer.vars
API Fixes: Python client: Add tests for buffer.options
API Fixes: Python client: Add tests for buffer.number
API Fixes: Python client: Add tests for buffer.name