Add server module for accepting API connections

Currently one server listening on a random address is started automatically, but
we may add facilities to listen on more addresses(through command-line flags or
vimscript functions for example)
Fix jumps depending on unitialized values

Reported by valgrind
Implement `vim_command` API function
Implement `vim_eval` API function

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.
Implement `vim_strwidth` API function
Implement `vim_list_runtime_paths` API function
Implement `vim_change_directory` API function
Move API helpers to it's own module
Implement `buffer_get_line` API function
Implement `buffer_set_line` API function
Extract API error boilerplate into a macro
Implement `vim_set_current_line` API function
Move `vim_to_object` to the api/helpers module
Implement `vim_get_var` API function
Implement `vim_set_var` API function
Implement `vim_get_option` API function

The `get_option_value_strict` function from the upstream source was
reintegrated for this.
Implement `vim_set_option` API function

The `set_option_value_err`, `set_option_value_for` and
`unset_global_local_option` functions were re-integrated from upstream.
Implement `vim_{out,err}_write` API functions
Implement `vim_get_buffer_count` API function
Implement API buffer switching functions