implemented atexit to close panel interfaces on exit

*PLEASE REVIEW*

This is a first attempt to properly close out handlers when a process is killed.

The current problem is that when passing a SIGTERM signal to the process, the PyAudio device interface isn't closing out properly. Apparently the `__del__` methods don't always get called when the process gets a TERM signal. We have a few options:

1. use the `atexit` module to call a cleanup function when the process exits
2. run the experiment in its own thread, where we can define explicitly how to handle TERM/KILL/etc
3. use the `signal` module to handle SIGTERM