Vim: improve GotoOrOpen handling of tabs

As reported here:

https://github.com/wincent/wincent/commit/8a95c3dba726#commitcomment-8255196

If you open "FileA" in a tab, and "FileB" in a tab, trying to switch to
"FileA" would open it in "FileB"'s tab, replacing it. This is because
`bufwinnr()` doesn't look in other tabs to determine if a file is
already open.

Alas, we can't just use `bufexists()` either (like we used to, prior to
8a95c3db), because that reports hidden buffers (and if we pass a hidden
buffer to `:sb` we wind up with an unwanted split).

The fix here is to check `bufwinnr()` first, and if that fails we check
`bufexists()`, but we exclude hidden buffers.

Tested the tab behavior as follows:

- open "FileA" in a tab
- open "FileB" in a tab
- re-open "FileA"; see that we switch to that tab

Also tested to make sure we don't have a regression for the hidden
buffer case:

- open "File" in a split
- open "FileB" in a split
- open "FileC" in that same split (making "FileB" hidden)
- re-open "FileB"; see it replace "FileC"