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'.