fix bash, add fish shell

# Bash
* allows semicolon after fi/done/esac, as in:
```
if foo; then
  bar
fi; <--- here
```
* allows `&`, `&&`, `|`, `||` in front of opening keywords

# Fish shell
basic support for [fish-shell](/fish-shell/fish-shell/)

* Adds the opening keywords `if`, `while`, `for`, `switch`, `function` and `begin`.
  They must be   prefixed by either
  * the beginning of a line
  * a semicolon `;`
  * `and`, `or` or `not`

  and optional whitespace.
  They must also be suffixed by either a semicolon or whitespace.

* Aalso adds the closing keyword `end`, following the same criteria as
above, but excluding '`and`, `or` and `not`