Fix shell.{c,h} comments to match the style guide
Move signal handling to libuv event loop

This removes all signal handling code from os_unix.c to os/signal.c. Now signal
handling is done like this:

- Watchers for signals are registered with libuv default event loop
- Any signals received in `event_poll` will push corresponding `Event` objects
  to a queue
- `os_inchar` will eventually return the special key `KE_EVENT`, which is a
  instruction for vim to drain the previously mentioned event queue and execute
  the associated handlers.

The reason signals aren't handled directly in the libuv callback is to avoid
recursion in the event loop(which isn't supported by libuv).

The same principle used here will apply to other events in the future.
Handle events in `input_poll` to prevent `event_poll` recursion