[vim keymap] Add Ctrl-o/Ctrl-i jumplist motions

One of the killer features in Vim, which allows user to jump around previous cursor positions.

Here's how vimdoc defines a jump:
>A "jump" is one of the following commands:  `'`, `backtick`, `G`, `/`, `?`, `n`,
`N`, `%`, `(`, `)`, `[[`, `]]`, `{`, `}`, `:s`, `:tag`, `L`, `M`, `H`  and
the commands that start editing a new file.  If you make the cursor "jump"
with one of these commands, the position of the cursor before the jump is
remembered.  You can return to that position with the "''" and "``" command,
unless the line containing that position was changed or deleted.

I tried to make it match the original as much as I could,
however there's still something __missing__ in my implementation:
1. recording postion for `(` `)`  _(depending on sentence motions which is not yet implemented)_
2. cross-file jumps _(depending on native file buffer support)_