Fixed several bugs, including a crashing bug when shutting down after setting a new sound via the preferences.
Made the Timer live in its own object and thread, and generally made the timing much more accurate.
Added several features to make it nicer to use the application and make sure the timer continues to be responsive even while changing the timing with the UI.
Added lots of documentation and some general cleanup in the code.
Thanks to everyone who sent in bug reports and suggestions!