`bufexists` can't handle the home directory(`~`). Instead use `bufnr`
and `bufwinnr`, which are more appropriate.
Also, I've decided to use `bufwinnr` instead of `bufnr` for checking if
the file exists before loading it with `g:vebugger_view_source_cmd`, so
it'll use `g:vebugger_view_source_cmd` if no window displays the buffer
- even if the buffer is loaded. This fixes an inconsistency that was
before, that `g:vebugger_view_source_cmd` would get invoked only if the
file has no buffer loaded, if there is a buffer loaded it'll jump to it
from the current window.
Most user actions now go through vebugger#userAction, which calls the
user action on the active debugger object. The exceptions are:
- Starting the debugger - because we don't have an active debugger yet
- Stopping the debugger - because we'll need to clear the active
debugger after that
- Altering breakpoints - because we want to be able to do it even
without an active debugger(e.g. - setting breakpoints before starting
the debugger)
Only supports setting variables and executing functions, because that's
what GDB supports(via different commands)(I think - didn't find anything
else...)