Many fixes!

Fix the null pointer exception where mTts is null
Fix the threading so that speak() is always called in a thread
Update the deprecated onUtteranceCompletedListener to an UtteranceProgressListener
Add onCreate method to save the compute time of recreating the mTts object on every batch of messages
Add a thread-safe queue to properly ensure shake/audio focus handling with multiple asynchronous calls to speak()