Inline ga_init()
Rename ga_init2() to ga_init()
func-attr: clang 3.5 doesn't support alloc_size

The attribute was removed in commit c047507 in the clang repository as it
was never properly implemented anyway. This fixes compiling with clang 3.5.

Fixes issue #429
func-attr: add some extra handy function attrs

The attributes in question are:

- nonnull: specify whether a function argument cannot/may not be null
- returns_nonnull: specify whether a function will not return a null
  pointer (example: xmalloc can't return null, so it should be annotated as
  such). Only available from gcc 4.9 onwards.

Currently these attributes are only supported by gcc.
alloc: xmalloc and xrealloc can't return null

With this annotation/function attribute, we can inform gcc that these
functions never return null, which can save a lot of redundant null checks.
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
Make most event handling private to event.c
Exit event loop when `got_int` is set
Fix bug in queue implementation causing crash
Try another fix for SIGINT handling
Make `event_poll` loop break on timeout(implicitly returned from `poll_uv_loop`)
Refactor `event_loop` exit conditions