api/window_set_cursor: make sure cursor line is visible.

Previously, the cursor could be left outside the visible range if window
is not the current window
test/api: add test for set_cursor always updating the screen
coverity/74362: Initialized Array using ARRAY_DICT_INIT
Merge pull request #1371 from GokuITA/coverity74362

coverity/74362: Initialized Array using ARRAY_DICT_INIT
Merge pull request #951 from bfredl/curfix

api: window_set_cursor doesn't always update position.
job: Simplify job_teardown function

Remove the current teardown logic and reuse the job top timers with
event_poll_until all jobs exit or are killed.
wstream: Memory allocation improvements

- Rename WriteData to WRequest
- Inline uv_write_t into WRequest, avoiding an extra allocation
- Manage WBuffer/WRequest instances using klib memory pools
server: Refactor to ensure server handles are always properly closed

If the server fails to start(due to used address for example), the
`server_start` function was freeing the handle memory before it was properly
removed from libuv event loop queue. Fix that by replacing the `free(server)`
call by `uv_close` call, which will take care of freeing the server on the next
event loop iteration.  Also replace `EMSG` calls by `ELOG`/`WLOG`.
event: Rename pending_events to deferred_events
event: Reintroduce the immediate event queue

Commit @264e0d872c("Remove automatic event deferral") removed the immediate
event queue because event deferral now had to be explicit. The problem is that
while some events don't need to be deferred, they still can result in recursive
`event_poll` calls, and recursion is not supported by libuv. Examples of those
are msgpack-rpc requests while a server->client request is pending, or signals
which can call `mch_exit`(and that will result in `uv_run` calls).

To fix the problem, this reintroduces the immediate event queue for events that
can potentially result in event loop recursion. The non-deferred events are
still processed in `event_poll`, but only after `uv_run` returns.
event: Ensure the event loop has been cleaned up in event_teardown

- Add input_teardown/signal_teardown to take care of closing signal/stdin
  handles.
- Call those functions in event_teardown, and ensure there are no active handles
  by entering an infinite loop when there are unclosed handles(think of this as
  an assertion that can't go unoticed on travis).
- Move event_teardown call to the end of mch_exit. That is required because
  event_poll may still be called in that function.
Merge PR #1369 'Assert libuv event loop is properly cleaned up'
legacy tests: change helpers
legacy tests: migrate test4
legacy tests: migrate test102
legacy tests: migrate test9
legacy tests: migrate test22
legacy tests: migrate test106
legacy tests: migrate test18
legacy tests: migrate test_options