Make signal handling optional

Signals can only be handled on the main thread. This gives the option of
running s3peat on a background thread.

Feel free to implement this a different way if you like.