Vagrant completion updates

Improved vagrant completions for some commands to avoid spurious completions, and added completions for some missing Vagrant commands.
In this function, `set -q cmd[2]` won't work unless you also test `not set -q cmd[3]` since you're trying to ensure there's only two words. So we can stick with `count`. But it can still be simplified (and the `set cmd` be fixed):

```fish
function __fish_vagrant_using_command_and_no_subcommand
    set -l cmd (commandline -opc)
    test (count $cmd) -eq 2 -a "$argv[1]" = "$cmd[2]"
end
```

`"$cmd[2]"` is quoted in this case because we're passing the argument to `test` regardless of whether the first test passes. We could use `test (count $cmd) -eq 2; and test "$argv[1]" = $cmd[2]` but there seems to be no point.