[RFC] Add `feedkeys` API function part 2

Cleaning up after #916

- I've split the f_feedkeys() function from eval.c into a reusable feedkeys()
- Now the API vim_feedkeys should work just like the vimscript feedkeys(String keys, String mode)
- Added new vim_remote_send(String) API for compatibility w/ Vim --remote-send

Some small comments:

- Could you add some comments (like `cstr_to_string`) and shortly state that it's different from `cstr_to_string` in that it doesn't make a copy of the string?
- This function is not safe for passing in NULL pointers. If you don't want to handle the NULL pointer case, then please add the corresponding NONNULL attribute.
- This function is pure as far as I can see (please verify this for yourself, the definition is in the gcc docs). `strlen` is explicitly mentioned as a pure function. So it can be annotated as such with `FUNC_ATTR_PURE`.