Fix crash when more than two wakeup engine exists
For providing a closure to the callback function,
necessary data were stored in a vector and passed
pointer to the data inside the vector, but since
vectors re-arranges internal elements to a new
location when the size gets bigger than its capicity,
pointers to the internal elements get invalidated
which caused crash. For this reason, changed to use
deque instead of vector since deque is a stable
container that preserves internal elements' memory
location.
Change-Id: I2ba578e98d96171aea068b95ea27807b7a143c50