Log never handled speech indexes, and don't make the speech queue lag behind (PR #9946)
From the speech manager docs:
> For every index reached, L{_handleIndex} is called.
> The completed sequence is removed from L{_pendingSequences}.
> If there is an associated callback, it is run.
> If the index marks the end of an utterance, L{_pushNextSpeech} is called to push more speech.
`_handleIndex` calls `_removeCompletedFromQueue` for the specified index. However, that code did check whether `currentIndex >= lastCommand.index`. In the case where the speech synthesizer sometimes doesn't send a notification for an index, this means the following:
1. Speech synth misses an index, calls the extension point for the index after the missing one
2. `_removeCompletedFromQueue` removes the sequence from the queue that is associated with the missed index, thereby ignoring the current index.
3. More importantly, `_removeCompletedFromQueue` checks the missed index to see whether it is the index for the end of an utterance.
4. If it is not, it expects the sequence to continue. However, if the current index was actually the end of the current utterance, the current index would be handled as soon as the next utterance starts as it is still in the queue, but as the end of the utterance is never handled, speech simply ceases.
Now:
Log cases of indexes we missed, and clean up the sequences for the missed indexes.