Use std::vector instead of std::deque in QAlertDispatcher

As we never use {push,pop}_front std::vector works here perfectly.
Also reserve memory for std::vector out of lock.

This could be considered as an optimization, but in reality this is just
using right container in right place. According to my measurements total
speedup is under 0.2%.
Fix race condition in QAlertDispatcher

It was possible that QAlertDispatcher::dispatch() could access (lock)
mutex that was destroyed by main thread. Fix this by moving mutex into a
tag.