A major mode to edit Fish shell scripts.

WIP: Syntax highlightings of variable names.  Still working on
highlighting builtin commands.
Highlight function names.
Wire up syntax table.
Highlight builtin names.

I want to use a variable to hold the Fish builtin keywords, because it's
a big list, and I don't want to manage an optimized regex by hand.

To use a variable in fish-font-lock-keywords-1 I had to use a backquote
and a comma to get the variable to be evaluated within the list passed
to font-lock-defaults.  Without it, font-lock-defaults fails with a
message about, "fish-builtin-commands-re" being an invalid function.
Factor out different quoting styles into consistent calls to (cons).
Highlight variables in 'set' expressions.
Initial tests for fish-mode.
Test for simplest indent.
Test indent of multi-line functions and 'end' keyword.

Un-indenting after 'end' keyword is failing.
WIP: Addtest cases. Simple (and wrong) indent implementation.
Start using SMIE for indentation.

What works?
* function/end
* if/else/end

What doesn't work?
* Function defs use 13 spaces, instead of 4. Wat?
* If/end doesn't work. The 'end' is aligned with the arg to 'if'.
Autoloading by file type works.
Slightly better. if/end works better. Add debug msgs.

if/else/end still messed up. Still indenting by > 4.
I think the second lines after 'if' and 'function' are being interpreted
as function arguments by SMIE.
WIP: Progress. if/else/end works better.

* if/else if/else/end doesn't work.  The body of 'else if' is indented
  too far.
* if statements still aren't indenting to column 4.
* function/end still indents the body too far. Column 9 instead of 4.

Changed grammar and indentation rules after reading ruby-mode,
sh-script-mode, and elixir-mode.  Grammar looks more like sh-script-mode
and rules look more like elixir-mode.
Smie includes punctuation as tokens.
Smie indent rules log debugging messages.

Inspired by elixir-mode.
Run tests from the command line.

Again inspired by elixir-mode.
Add README.