fix #1027: :wundo segfault in new, non-empty buffer
input/job: process ctrl+c and do conversion in the read callback

- Extract `process_interrupts` out of `convert_input`
- Instead of waiting for os_breakcheck/os_inchar calls, call `convert_input`
  and `process_interrupts` directly from the read callback in input.c.
- Remove the `settmode` calls from `job_wait`. Now that interrupts are
  processed in the event loop, there's no need to set the terminal to cooked
  which introduces other problems(ref 7.4.427)
input: Invert sizes of input/read buffers

Input buffer must be bigger than read buffer to ensure it always has space for
converted data.
api: Add vim_input function and mark vim_feedkeys as deferred

The `vim_feedkeys` must be deferred because it can potentially free the buffer
passed to `os_inchar`(which in turns calls `vim_feedkeys` indirectly).

The new `vim_input` function can be used to emulate user input(Since it does not
mess with the typeahead, it is safe to execute without deferring).