Make halting on SIGINT async

This change gives adaptors/drivers more flexibility in halting. Additionally, now, by default, all Adaptors/Drivers will remove all their event listeners before halting, which should prevent some additional commands from being sent to the adaptor during shutdown.