use interrupt signal to terminate

Provides a consistent interface for terminating the application.
Especially when there are other Libuv loops in the loaded applications
that may require notification.