Autocompletion that cycles through alternatives

Mimics Vim behavior, except it appends a space if
the command can be completed unambiguously, for some reason.

Algorithm is as follows:

  * Suppose user has typed "foo" (so '^' is the cursor position):

  :foo
      ^
  * Then user presses <TAB>:

  :foo         foobar   foobaz
      ^
  * Then user presses <TAB> once more:

  :foobar      foobar   foobaz
         ^
  * And again:

  :foobaz      foobar   foobaz
         ^
  * Next <TAB> press will return her to the start:
  :foo         foobar   foobaz
      ^
  * And then the cycle will repeat