Move cursor back on insert mode exit.

Make this consistent with vi.
Bind 0 to beginning-of-line in vi mode.
fix gem --version/--help tab completions
Minor cleanup of redirection functions
Eliminate the parser_use_ast switch, which does nothing, and
exec_no_exec, which also does nothing in the new parser
Remove the now-unused parser_t::job_create
Remove the close_old field from io_fd_t, which is never actually
respected - a bug dating back to fish 1.x! The fd that would be closed
is actually closed in io_cleanup_fds().
Simplify threading implementation. Removed iothread array. Threads now
run detached (no more pthread_join), and will not exit until they see
that all requests have been dequeued.
Reduce the iterations in the iothread test to something more reasonable.
Remove an unnecessary lock.
Remove a debugging statement (oops)
Set fish_vi_key_bindings to start in insert mode by default

Add optional argument for fish_vi_key_bindings to set desired initial
mode:
> fish_vi_key_bindings default
added docker completion file
functions on top
Remove useless return.
Migrate universal variables to env_var_t structure. Encapsulate
universal variable storage into a class for better testability.
Fix filehandle leak in proc_get_jiffies
Attempt to silence some warnings
Silence unused return value warning in FATAL_EXIT
Squelch some more warnings on Linux
Fix a duplicated variable, and defeat some warnings in fish_tests