Fix: Proper modes support

The vim code is now more maintainable, easier to understand and
extensible. This commit makes it easier to implement new modes, such as
the proposed ignore mode.

<del>Note: This is now a work in progress, since I have gotten a few more ideas I'd like to do before merging.</del>

Open for review!

Note: This PR also adds the open multiple links command and insert mode, to show off the gains from the refactors.