Minimize plKeyEventMsg allocations

KeyEvent messages are pretty common. Since we never send them from inside
a MesReceive() method, the sends are always synchronous, so we can just
create and keep one. This will also be useful for determining if dead keys
were eaten.