This should not be necessary in general, and causes e.g. :FZF to be
loaded from the global Vim runtime (causing an assertion failure in the
tests).
It is replaced by a verbatim / trimmed down `:runtime` for the "Check
installed plugins" test.
Now `:PlugInstall!` and `:PlugUpdate!` forces to update submodules.
`:PlugInstall!` now also checks out to new specified branch, tag, or
commit.
Also added tests for changing branch, tag, or commit.
* Main differences from ruby are inside Command class, notably it
poll/sleeps on the subprocess to check output & timeout.
* Another difference, interrupt is not instaneous due to checking var.
* Otherwise, I mainly just mirrored code into objects.
* Note that due to GVim freeze, disabling use on Windows