Define special key for asynchronous events

K_EVENT/KE_EVENT are used to signal the loops that read keys(scattered across
normal.c edit.c , ex_getln.c and message.c) of asynchronous events that were not
initiated by the user.

Representing non-user asynchronous events as special keys has these advantages:

- We reuse the normal vim redrawing code. As far as the rest of the code in
  edit.c/normal.c is concerned, it's just the user pressing another key.
- Assume less about vim tolerance for "out-of-band" modifications to its
  internal state.
- We still have a very complex codebase and it's hard to predict what bugs may
  be introduced by these changes. With this we implement asynchronicity in a way
  that will be more "natural" to the editor and has less chance of causing
  unpredictable behavior.

As the code is refactored, we will be able to treat user input as an 'event
type' and not the other way around(With this we are treating arbitrary events as
a special case of user input).
Remove old comment from job.c