Rudimentary Navigator with TTS

Duck audio when announcing
Improve tts string sanitization (+4 squashed commits)
Squashed commits:
[2caf8a3] Continue announcements in the background
[1e0f4ba] Translate Announcer to Swift
[34c69b5] Speak maneuvers
[1008032] Navigator
Why do you have to define an ivar here and not just mutate the original string argument passed in?