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 with optimal
whitespace, a semicolon, `and`, `or` or `not`. they also must be
suffixed by a semicolon or whitespace.

also adds the closing keyword `end`, following the same criteria as
above, but excluding '`and`, `or` and `not`