Rewrite `abbr` function

The usage is still the same, but it's a lot more robust, and also no
longer assumes $fish_user_abbreviations must be a universal variable.

This also fixes the unexpected error output when calling `abbr -a` with
no existing abbreviations.

Calling `abbr -a` with an abbreviation that already exists now silently
overwrites the abbreviation, just like `function` and `bind` do, instead
of complaining.
Fix test breakage from 14724401f

We can't use $PATHS to test the :-splitting because the global config
file adds extra paths based on /etc/paths and /etc/paths.d.

Ideally fish would have a way to suppress behavior like that, but for
the time being it doesn't.
Raise debug level to 2 on annoying Changing language to English message

Fixes #1386
Remove help completion for eval, which doesn't work

Fixes #1379
web_config: send correct MIME type (and actually send it)
Revert "Remove help completion for eval, which doesn't work"

This reverts commit d2f23e1df45f07fb4d716b07c40de7381e539b9d.
Support -h/--help with `eval`

`eval` prints help if given a single argument of -h or --help.

Fixes #1379.
fish_config: Log the path for errors
web_config: Interpret fish output as utf-8

Use the unicode replacement character in place of non-utf-8 sequences.
Rewrite __fish_print_help to produce better results

As a result of this rewrite, the output now:

* Expands to fit the terminal width, like `man` does
* Preprocesses the manpage with `tbl` just in case, since `man` does
  this, even though I doubt any fish manpages use `tbl` formatting.
* Handle bold/underline with the `ul` command as it was designed for
  instead of trying to fake it with `sed`.
* Compresses blank lines as `man` does with the default `less -is`
  pager.
A little extra tweaking so builtin_print_help looks better

The terminal width magic that __fish_print_help learned doesn't help
when builtin_print_help runs it in a subshell. Instead, add an
undocumented --tty-width flag to __fish_print_help that's used to pass
the terminal width.
Add GPL2 LICENSE file

Fixes #1073.
Vagrant completion updates

Improve vagrant completions for some commands to avoid spurious
completions, and add completions for some missing Vagrant commands.

Fixes #1748.
Support space separators for abbreviations as part of #731
web_config: use only Python 3-style (Unicode) string literals

Improves Python 2/3 compatibility.
(It is the distant future, the year TWO THOUSAND.)
web_config: further python2/3 unification
Mark unknown versions as unknown.
Change how arrays and environment variables interact.

Prior to this change, inherited environment variables
would be split on colons, becoming an array. This change
eliminates that behavior. Now environment variables are
always split on the record separator character (ASCII 0x1e),
with the exception of a short whitelist of PATH, MANPATH,
CDPATH. Likewise, exported variables are also exported
delimited by rs, with the exception of the above whitelist.

Fixes #1374, also see #1656
Report certain errors from parser_t::eval() that were previously ignored
Standardize unmatched wildcard errors

Unmatched wildcard errors during parsing are normally only reported when
run interactively. The switch command was unconditionally reporting them
anyway (and not setting the status to 124). Fix it so switch goes
through the same code path as everything else.