mark-selection addon improvement

Addresses issue #1484 and speeds up mark-selection add-on by
maintaining text selection coverage with small chunks of text marks.
[mark-selection addon] Simplify

Issue #1523
Move addon state objects into cm.state

Rather than polluting the top-level of the editor object
[vim keymap] Add macro support for normal mode

[vim keymap] Remove duplicated @ logic

[vim keymap] Remove q swapping

[vim keymap] Recover mis-deleted line from 3-way merge conflict

[vim keymap] "q" repeatable by count

[vim keymap] Remove deprecated lookup tables

[vim keymap] Robustify if condition

[vim keymap] Revise logKey logic

[vim keymap] IE8 compatible forEach

[vim keymap] Transparentize hidden states

[vim keymap] Minor fixup

[vim keymap] Eliminate globals/Remove unused function/Add tests
[vim keymap] Fix zz/zt/zb
[real-world uses] Add Upsource
[css mode] Recognize SVG properties

Closes #1529
[real-world uses] Better link for Upsource