travis: Force travis build to fail when core files are dumped
travis: Test `nvim --version` in gcc build

The --version flag drives Nvim to take a different code path, which is worth
testing. Now we do it in the "gcc" ci target(It will only fail if the exit code
is different than 0)
event: Do an early return from event_teardown when not initialized
channel: Move mch_exit(0) call to a non-deferred event handler

Since `mch_exit` will re-enter event_poll, it is necessary to call it outside
libuv event loop.
event: Assert that all libuv handles are closed on exit.

Travis build will now fail when core files are dumped, so call `abort()` when
the event loop is not fully released before exiting.
test: Add valgrind suppression for libuv memory leak

A memory leak happens in uv_spawn when stdio is set to UV_IGNORE and the child
process fails to start. This only happens when libuv is compiled with gcc and
optimizations enabled(the default).

Compiling with '-O0' removes the leak, but all that can be done right now is
ignore the leak by adding a valgrind suppression.
tmp