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.
Fix a likely future bug

Now passing an array of arguments to the `enter` method of modes, instead
of using splats, in order not to destroy the `this` context of the `enter`
methods.
Let hint commands take advantage of the new modes

All the hint commands do now is:

1. Define `callback`.
2. Run `vim.enterMode('hints', [callback])`.

Much DRY:er!
Merge branch 'develop' into proper-modes + Refactor

Conflicts:
	extension/packages/commands.coffee
	extension/packages/vim.coffee

The conflicts above required some refactoring to be resolved. Instead of
doing _just_ the refactoring required to get the code runnning again, I
continued with related refactoring, since it felt more sensible.
Slight `Vim::handleKeyDown` refactor

Incidentally, the refactor solved a bug I just found. Before, you could
not have a custom shortcut such as `zvfa` without triggering the `vf`
command, or `zo` without triggering the `o` command.
Refactor Esc key handling

This includes refactoring of events.coffee and vim.coffee.

The Vim class no longer handles any events. It is just given a `keyStr` in
its `onInput` method. Then it handles that `keyStr`, and reports back if
it was of any use: It matched a command or was used by some mode. That
information is then used in events.coffee to determine if the event should
be suppressed or not.

All events.coffee does now (in the keydown/keypress/keyup handler) is
determine if it should run vim and if it should suppress the event. The
blurring of XUL controls has been moved to commands.coffee, where it
belongs.

Moreover, the Esc key now does two things by default, but only one at a
time. If we're in normal mode, it runs `command_Esc`. Otherwise it calls
`vim.enterNormalMode()`. This allows us to cancel hint markers on dialogs
(such as the help dialog) without closing the dialog (dialogs are often
closed when Esc is pressed).
Refactor modes.coffee by grouping all hints files

There was too much code in modes.coffee, making it hard to extend in the
future. It simply requires mode-hints.coffee. However, adding _yet_ a new
file for the hints was one too much, so I group all hints-related files in
a folder called mode-hints.
Fix #90: Add follow multiple links command
Add command: Enter insert mode
Fix: Hint marker rotation was broken
Fix: `keyStr` in events.coffee shouldn't be global
Merge branch 'develop' into proper-modes

Conflicts:
	extension/packages/mode-hints/marker.coffee
Fix: af should work as f/F when hint focuses target

For example, if you pressed af and then a hint for a textarea, that
textarea would be focused, but the markers would still be visible.
Fix: Call only `onEnterNormalMode` of current mode

`Vim::enterNormalMode()` mistakenly called `onEnterNormalMode` of _all_
modes, instead of just of the mode we're just leaving.

The `onEnterNormalmode` of insert mode made it impossible to focus some
textareas using hints, for example.
Fix: `Vim::enterNormalMode` should reset `@keys`

Otherwise keys accumulated in other modes might be interpreted when going
back to normal mode. For example, following a link with a hint ending with
"a" and then directly trying to follow another link, would do so in a new
tab. That last "a" was still in `@keys` when returning to normal mode, so
when trying to use the "f" command, it was interpreted as "af" instead.
Fix: Dropped out of insert mode on location change

For example, it would be nice to usually be in insert mode in gmail, and
only occasionally leave it. However, as soon as you for example went from
the inbox to an e-mail, the location changed, which caused normal mode to
be entered. Only when in hints mode we need to do that (issue #101).
Minor cleanup
Merge branch 'develop' into proper-modes

Conflicts:
	extension/packages/button.coffee
	extension/packages/events.coffee
	extension/packages/utils.coffee
Make command_Esc in charge of all "escaping"

To be able to exit modes or blur text inputs, you _had_ to use Esc before.
It was hard coded. Now, changing the shortcut for command_Esc works as
expected.
Fix #199: Remove blur_on_esc and leave_dt_open prefs