msgpack-rpc: Allow registration of handlers by other modules
ui: Add abstract_ui termcap and split UI layer

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(each UI instance is an implementation of the UI layer and is
  registered with ui_attach).
- 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.
syntax: Use RGB/GUI attribute information for "abstract_ui"

Instead of using classic cterm color numbers and attributes, treat "abstract_ui"
as a GUI: Pass rgb color numbers and gui attributes when the "highlight_set" UI
method is called. The terminal UI will have to translate RGB color information
to an appropriate color number, and the "term"/"cterm" :highlight keys will
eventually be deprecated.
msgpack-rpc: Add remote_ui module

The remote_ui module is an implementation of the UI layer, and it attaches UI
instances that redirect redraw notifications to connected clients.
test: Add screen test facility

- Add screen.lua which implements a remote screen to verify screen state by
  tests under functional/ui
- Add some basic screen/highlight tests
Merge PR #1605 'Abstract UI termcap'
docs: Remove BeOS/Haiku remnants
docs: Remove VAX remnants
docs: Remove EBCDIC remnants
docs: Remove 'osfiletype' remnants

Even when this was finally removed 6 months ago in b2b920f, it had
already been disabled for a while. Due to this, just remove all remnants
of the option as opposed to putting a placeholder like what was done for
'shortname'and 'cryptmethod'.
docs: Remove RISC OS remnants
docs: Remove OS/390 remnants
docs: Remove Photon remnants

Also get rid of some platform references made irrelevant by the removal
of their respective platform specific GUI code.
docs: Fix incorrect Mac path references
Merge pull request #1628 from Pyrohh/misc-cleanup

More misc. platform cleanup
input: Recognize mouse events for abstract_ui
Merge PR #1632 'Recognize mouse events for abstract_ui'