Ensure Vomnibar selection is always within bounds.

Closes #670.
Fix initial selected input hint index.
Refactor handlerStack. Closes #657.

Previously, handlerStack was designed only for removal of the handler
right at the top of the stack. However, some handlers sought to remove
themselves when they were not at the top of the stack, creating
confusion. The new handlerStack ensures that such removal can always be
done safely.
Deactivate alphabetical hints mode if keypress is not a hint char.

Closes #638, #287.
Configurable vomnibox default/fallback search engine.
Missed off one key line in previous commit.
Code cleanup, as requested by in3/Jez Ng here:
  - https://github.com/philc/vimium/pull/682.
Revert previous change whereby "+" characters inserted between search
terms are not URLencoded.
Tweak options page description and ensure tests pass.
Refactor and fix findAndFollowLink. Closes #650.

* Fix bug where symbols that were themselves word boundaries were not
  getting matched
* Factor out some operations for efficiency
* Add tests
Forgot to include handler_stack.js in options.html.
Update README.
Avoid spurious HUD after shift-toggling tab opening behavior.
Store all 4 hints-mode states in 1 state variable.

We were previously storing 4 states in 3 booleans, which was overkill.
It was also harder to reason about and led to subtle bugs in the HUD
when transitioning between states.
Use insertCSS() API instead of manually created style element.

For some reason addCssToPage seemed to break on Chrome 24.

Closes #676.
Address feedback.
Cutting 1.40
Ensure the initial selection index is always respected.

Closes #687.
Make the default value for scrollStepSize a string.

This interacts with these lines from settings.coffee:

    don't store the value if it is equal to the default, so we can change the defaults in the future
    if (value == @defaults[key])
      @clear(key)

If the default value is numeric, then this test NEVER succeeds (because
"==" is compiled to "===", and the types don't match).

So, scrollStepSize is stored in localStorage even if it has its default
value.  Which obviates the intention of the line quoted above.
Merge pull request #688 from smblott-github/scrollStepSize-default-fix

Correct handling of default value for scrollStepSize.