refactor VimBinding type.

It boils down to this:

- prereq :: EventString -> VimState -> MatchResult ()
- action :: EventString -> m RepeatToken

+ binding :: EventString -> VimState -> MatchResult (m RepeatToken)

It's now impossible to accidentally pass different eventstrings to
consecutive prereq and action calls. Not that it happened before.

Also many lines like

  error "can't happen, because we already checked that in prereq"

are no longer necessary.
Update VimBinding usage in example configs.
Compile yi-contrib with -Wall.
YiM variant of nmap.
Merge pull request #520 from ethercrow/master

Refactor Vim2.VimBinding