shell: Fix shell command output

Shell command output was broken in @8a5a8db, which refactored nvim to no longer
switch to cooked mode(linefeeds are processed differently).

Fix the problem by refactoring write_output to accept to extra arguments that
control the flushing behavior and where data will be written to: buffer or
directly to the screen.
deps: Fix 32-bit build of lib{unibilium,termkey,tickit}
Merge PR #1613 'Fix shell command output'
Revert "deps: Fix 32-bit build of lib{unibilium,termkey,tickit}"

This reverts commit f76df2475356add68212d737acd7da5bba3b64d6.
deps: Fix unibilium/libtickit URLs
Merge PR #1620 'Fix 32bit unibilium build'
msgpack-rpc: Allow registration of handlers by other modules
term/ui: Add new ui.c module and "abstract_ui" builtin termcap

Implement a builtin termcap based on the old gui. This is how Nvim behaves when
the "abstract_ui" termcap is activated:

- No data is written/read to stdout/stdin by default.
- Instead of sending data to stdout, ui_write will parse the termcap codes
and invoke dispatch functions in the ui.c module.
- The dispatch functions will forward the calls to all attached UI instances.
- Like with the "builtin_gui" termcap, "abstract_ui" does not contain any key
sequences. Instead, vim key strings(<cr>, <esc>, etc) are parsed directly by
input_enqueue and the translated strings are pushed to the input buffer.

With this new input model, its not possible to send mouse events yet. Thats
because mouse sequence parsing happens in term.c/check_termcodes which must
return early when "abstract_ui" is activated.

On top of the new UI infrastructure, a remote_ui module was added. It enables
the implementation of remote UIs via msgpack-rpc.
Preparing screen test infrastructure