Caching Support for Google TTS Service

Ordinarily, the download URL for every unique on-the-fly <tts> tag is
passed to mplayer for it to stream, and the file must be downloaded
again each time the tag is encountered (e.g. for reviews of the same
card).

These changes add caching support for these downloads such that when the
"cache downloads from Google TTS" checkbox is enabled on the
Configuration screen, the MP3s are instead downloaded to disk and the
path of the downloaded MP3 is passed to mplayer.

Caching the files locally has the benefit of speeding up successive
reviews of cards and also allows the TTS functionality to continue
working when network connectivity isn't available (assuming, of course,
that the given <tts> tag has been encountered at least once before).

The files in cache directory are handled by hashing the phrases within
each <tts> tag after some minimal normalization (e.g. removal of excess
whitespace and HTML). The cache directory can be emptied from the user
interface with the "Clear Cache" button on the Configuration screen.