unix: don't abort loop initalization

There are several conditions which could cause uv_loop_init() (and by
extension uv_loop_new()) to trigger an SIGABRT.  This includes mutex
initialization failure or running out of FDs.

This patch removes the abort()s and returns error codes instead.
Cleaning up prior initialization if something has actually failed.