Fix n gg selection

With this, you can you use `n-gg` to select to the nth line.
And I add the support for characterwise selection.

But there's a 2 problems left:
1. it doesn't work well for the line below the current line. For example, if you're at 4th line, then you press `V`or`v`and`6gg`, it doesn't work well.
2. I think we should apply this to `G` motion. But the implement of `G` is different from `gg`, so much code will be changed.

I'm working on the 2 problems but will need some more time. Maybe it's suitable to create a PR first for current work :smile: 
I could not replicate this behavior in vim. In characterwise visual mode, `gg` took me to the first character of the first line, not the desired character on the first line.