ignore empty cmd value
clean up code around conflict_cmd
Merge pull request #312 from zhuochun/bug-263-can-add-blank-hotkey

Fix #263 can add blank hotkey
Add missing parenthesis
Fix #310: Broken focus search bar command
Fix #318: Support Tab Groups

Just like when a text input is focused, send all keys to the browser.
This allows you to type the name of a tab to select it. Moreover,
commands doesn’t make sense when Tab Groups is opened, since they affect
the current tab, which is hidden _behind_ Tab Groups, out of view!
Expose xpath utils

Previously xpath usage was closely tied to the `getMarkableElements`
function.
Fix #280: Use `[rel]` for prev/next link matching

The standard way of marking up the previous or next page of a series is
to use a `<link>` or `<a>` element with a `rel` attribute.

We don’t bother with `<link>`s since the commands are substitutes for
clicking a visible element. (And at least in my experience, they’re not
commonly used.) Moreover, if there’s a `<link>` with a `rel` attribute,
there’s likely a corresponding `<a>`, too.

We first try to find a nicely marked up link, then we fall back on
pattern matching of the text contents of the links.

The spec on the `rel` attribute:
<http://www.w3.org/TR/html5/links.html#linkTypes>

How Google handles it:
<https://support.google.com/webmasters/answer/1663744?hl=en>

This commit is based on #313 by @zhuochun.
Let the Esc command close tab groups

Since commit 1fd30eca9 makes opening the tab groups view (ctrl-shift-e)
about the same as focusing a text input (passing all key strokes to the
browser), the Esc command must be able to exit from it.
Slightly improve markable element matching

- 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>

- Elements with the `tabindex` attribute should be matched, but not
  `tabindex=-1`, which means explicitly saying that the element should
  _not_ be focusable.
Bump minimum Firefox version (see #314)