Threaded Downloads for Google TTS

This set of changes introduces a variation on the caching implementation
for the Google TTS service such that all downloads are done on a
different thread.

By executing the downloads on a different thread, the user interface can
continue to function even if a download is taking a long time.