When cancelling in accept_if_not_autocompleting:, don't pass keys on.

We were passing the keys that cancelled the popup to the existing key
manager in situations where we were running
accept_if_not_autocompleting: and the completion popup *was*
autocompleting. This typically meant we'd get two spaces instead of just
one when we'd hit space, which should cancel the popup but not accept
the top completion when autocompleting.
Don't autocomplete while replaying input.
Add a virtualInput flag to ViTextView.

virtualInput indicates input that is not part of a macro or
dot replay that is still not being inputted directly from the
keyboard. Initially, we'll be using this to input the completion
from the completion popup in a way that allows the dot
command to work properly. The autocompletion popup doesn't trigger
when virtualInput is set to YES, much like it won't trigger when
replayingInput is set to YES. However, we WILL record keys inputted
virtually when virtualInput is set to YES (whereas we do not when
replayingInput is set to YES).
Insert completions by using keyManager handleKeys:.

Completions are now inserted by virtually playing the keys
that the completion would add to the current text as actual
keys typed by the user. We set virtualInput to YES while we
do this. This allows the keys to be recorded for the dot
command to replay, which fixes dot commands with
autocomplete.
Merge branch 'completion-as-you-type' into merged