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.