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.
Suppress wildcard errors in functions

Wildcard errors are only supposed to reported when encountered during
interactive use. The old parser also suppressed them if `is_block` was
true. This was lost in the new parser. However, this also suppresses
errors generated from `begin; code_here; end` and other block
constructs.

Instead, check the parser block stack when we hit an error, and suppress
the error if there are any function calls / events / source invocations.
These all indicate that the code being executed came from somewhere
other than the commandline.
Remove some obsolete job flags

These flags were used by the old parser, but not by the new one.
Don't stop job execution on wildcard errors

Wildcard errors are only reported interactively, and they're also not
really errors. Commands with multiple wildcards would in fact continue
executing if at least one wildcard matched, which is quite surprising.
But they would report an error if there is only one wildcard in the
arguments list and the wildcard has no match, even if there are other
remaining arguments.

Given this inconsistency, and given that sh does not stop execution if a
wildcard fails to match, it seems better to allow execution to continue.
This is better from a scripting perspective anyway, as it means
constructs like `set -l paths foo/*.txt` will actually create the
variable (with an empty value) instead of skipping the `set`
altogether and perhaps causing subsequent code to read or modify a
global or universal variable.
Run `make depend`
Improve error reporting for unclosed blocks
Use binary search to determine what tokens are keywords
Remove EXPAND_SKIP_PROCESS, which did not actually work
Unescape strings in keyword detection.

This allows keywords to be quoted. However, they may not contain
variable or process expansions, etc. Fixes #1398
ls: find and use various dircolors initialisation files, if they exist

Closes #1758.
web_config: map nonexistent post requests to 404
web_config: add support for adding and editing abbreviations

Possible future enhancements include explanatory text and an image for
the 'save' action.

Work on #731.
Allow funced to retry on error

Fixes #1371
Add an assertion to reflect unreachable code
Stop reaping children from SIGCHLD signal handler

Prior to this fix, a child process may be reaped in one of two ways:
1. By a call to waitpid() within job_continue
2. By a call to waitpid() within the SIGCHLD signal handler

Only the second call was with the WNOHANG option. Thus if the signal
handler fired first, and then the waitpid call fired, we could get a
deadlock because we'd end up waiting on a long-running process. I have
not been able to reproduce this on fish 1.x, though it seems like it
ought to reproduce there too.

This fix migrates the waitpid() call out of the signal handler; the
second class of calls moves to job_reap. This eliminates the possibility
of a race, because we check for job completion before calling waitpid,
and there is no longer the possibility of the job being marked as
complete asynchronously. It also results in a massive conceptual
simplification, since the signal handler is now very simple and easy to
reason about (no more walking jobs lists, etc).

This partially fixes a bug reported in #1273
Add setfacl completions
Remove some previously buggy but dead code that I mistakenly resurrected
Revert "Remove some previously buggy but dead code that I mistakenly resurrected"

This reverts commit 090f027de179f5bb92f07e5c947f3f273229d840.