Implement bind modes
Allow restricting earsing and listing of bindings to specific mode;
implement force repaint and multi-char bindings;
Add sample prompt for vi mode
Fix bug
Add sourceable script file to enable vi mode
Better input handling; add support multiple binding commands
Make Ctrl+C exit insert mode, add some more backspace binds.
Update vi bindings:

The following normal mode bindings are added:
    o, I, A, gg, G, g^, g$, x, X, backspace, d*, D, s, S, c*, C, ~, gu,
    gU, J, K, y*, Y, p, P

I was not able to add binding for 'O'

dd now deletes the whole line as vim, while D deletes the line to the
end. c, s, y act the same way
Merge pull request #1 from maxfl/bind_mode

Update vi bindings
Add optional options to fish_default_key_bindings

These options will be passed to the bind command.
Now it's possible to call
  fish_default_key_bindings -M insert
to set all original bindings to the insert mode
Merge pull request #2 from maxfl/bind_mode

Add optional arguments to fish_default_key_bindings
Rename 'new-mode' to 'sets-mode', prepare for selection support.
Merge branch 'bind_mode' of github.com:furunkel/fish-shell into bind_mode
Replace builtin 'bind_mode' with variable $fish_bind_mode
Add experimental support for selection and visual mode
Merge remote-tracking branch 'upstream/master' into bind_mode

Conflicts:
	builtin.cpp
	reader.cpp
	share/functions/fish_default_key_bindings.fish
Pull from upstream
Remove unused #defines
Add dirty bindings for *iw, *aw

Put E, W bindings in agreement with vim
Merge pull request #3 from maxfl/bind_mode

Add dirty bindings for *iw, *aw