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: Use `assert` to verify that all libuv handles were closed.

Now that travis can will fail on aborts, it is safe to use assert to verify that
the event loop has been fully released.
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.
test error