Add server module for accepting API connections

The `NEOVIM_LISTEN_ADDRESS` environment variable can be set to customize the
address where Neovim will listen for connections. If it's not set, a random
socket/pipe will be created, and the `NEOVIM_LISTEN_ADDRESS` will be updated
accordingly.
Fix jumps depending on unitialized values

Reported by valgrind
API: Implement vim_command
API: Implement vim_eval

The vimscript object conversion function was adapted from the version found in
'if_py_both.h' in the upstream source. It was also required to re-add the
`dict_lookup` function that was lost during the initial import.
API: Implement vim_strwidth
API: Implement vim_list_runtime_paths
API: Implement vim_change_directory
API: Move helper functions to another module
API: Implement buffer_{get,set}_line
API: Extract error boilerplate into a macro
API: Implement vim_set_current_line
API: Move vim_to_object to helpers.c
API: Implement vim_{get,set}_var
API: Implement vim_{get,set}_option

Some functions from upstream VIM were reintegrated for this:
- get_option_value_strict
- set_option_value_err
- set_option_value_for
- unset_global_local_option
API: Implement vim_{out,err}_write
API: Implement vim_get_buffer_count
API: Implement buffer switching functions
API: Implement window/tabpage switching functions

Also moved `find_buffer` to 'api/helpers.c' and removed unnecessary declaration
in 'window.h'
API: Implement buffer_get_length
API: Implement buffer_{get,set}_slice