Fix #309: Autofocus prevention is broken

Autofocus was broken by some Firefox update, possibly version 29. This
commit fixes it again. It also fixes a bug where autofocus was prevented
even on blacklisted sites, and cleans the code a bit.
Remove stray `console.log`s
Merge pull request #322 from lydell/fix-autofocus

Fix autofocus
Version bump and changelog update
Build version 0.5.11
Fix: Autofocus prevention got stuck by navigating the history

Either going forward and backward in the history, or using
`history.pushState()` caused the autofocus prevention to get stuck,
making it impossible to focus inputs.
Version bump and changelog update
Build 0.5.12
Fix #334: Make links without `href` markable

Commit be94b559b:

> - Only `<a>` elements with a `href` attribute should be matched, since
>   HTML5 allows `<a>` elements to omit `href`:
>
>   > If the a element has no href attribute, then the element represents
>   > a placeholder for where a link might otherwise have been placed, if
>   > it had been relevant, consisting of just the element's contents.
>
>   Reference:
>   <http://developers.whatwg.org/text-level-semantics.html#the-a-element>

That’s the spec. In the reality, people use all sorts of weird markup.
Some sites (such as StackExchange sites) leave out the `href` property
and use the anchor as a JavaScript-powered button (instead of just using
the `button` element).

This commit reverts the change to link matching in be94b559b. A side
effect is that sites using links without `href` in compliance with the
spec will get extranous markers for those links. It’s better to show too
many markers than too few, though.
next/prev commands - search for patterns in element attributes as well. Currenty optimized for Gmail
Better check for Google g_editable in isElementEditable that fixes some issues in Gmail
fix recursion in isElementGoogleEditable impl
Merge pull request #341 from akhodakivskiy/next-prev-matching

next/prev commands
Document commit 1b874f1b7b3
Improve find mode. Fix #342. Better Esc handling.

Previously, find mode only worked if you used VimFx's shortcuts to enter
it. If you opened the find bar some other way, you weren't able to end
the search using Enter, and the n/N commands wouldn't repeat what you
just searched for.  Now, find mode is entered as soon as the findbar
input gets focused, no matter how it was focused. Find mode is also
exited as soon as the findbar input is blurred. Previously, if you
happened to unfocus the findbar without using Esc or Enter, such as
clicking or tabbing away, then you'd still be in find mode, making all
keypresses focus the findbar input rather than activate commands.

If the active element is editable during a keypress we used to pass that
keypress along to the browser -- regardless of the current mode --
instead of activating commands. The findbar input is also an editable
element, but when it is focused we want Enter to close the findbar.
Therefore we used to not pass along Enter to the browser. If the user
mapped Enter to a command, that meant that it would be impossible to
press enter in an input to type a newline, submit a search query, etc.
Now, we only use this automatic insert mode in normal mode instead.

The above also fixed another problem. We used to always pass Esc to the
browser in normal mode, even if Esc is mapped to a command. Now, that is
not done if we’re blurring an element. That makes it possible to blur an
input inside a custom dialog without closing it (Esc almost always
closes custom dialogs).  This makes it possible to use devdocs.io with
VimFx, which was very difficult before.
Use a `WeakMap` in `utils.Bucket`
Update greek translation
Translate prevent_autofocus strings
Merge pull request #354 from sirodoht/greek-locale

Update greek translation
Merge pull request #343 from lydell/better-find-mode

Better find mode
Only allow focus events immediately after an interaction

Replace the autofocus prevention with suppressing _all_ focus events
that didn’t happen directly after an interaction (keypress or click)
with the page.

Strictly speaking, autofocus may only happen during page load, which
means that we should only prevent focus events during page load.
However, it is very difficult to reliably determine when the page load
ends. Moreover, a page may load very slowly. Then it is likely that the
user tries to focus something before the page has loaded fully.
Therefore focus events that aren’t reasonably close to a user
interaction (click or key press) are blurred (regardless of whether the
page is loaded or not -- but that isn’t so bad: if the user doesn’t like
autofocus, he doesn’t like any automatic focusing, right? This is
actually useful on devdocs.io). There is a slight risk that the user
presses a key just before an autofocus, causing it not to be blurred,
but that’s not likely. Lastly, the autofocus prevention is restricted to
`<input>` elements, since only such elements are commonly autofocused.
Many sites have buttons which inserts a `<textarea>` when clicked (which
might take up to a second) and then focuses the `<textarea>`. Such focus
events should _not_ be blurred.