fix bash closing

allows semicolon after fi/done/esac, as in:
```
if foo; then
  bar
fi; baz
```
fix bash opening

allows &, &&, |, || in front of opening keywords
add support for 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'.
Merge remote-tracking branch 'upstream/BH2ST3' into patch-1
add '&' and '|' to fish shell
remove trailing semicolon etc from matchgroup
Merge pull request #165 from jomo/patch-1

fix bash, add fish shell