detect fish scripts by shebang line

We can't use `:setfiletype` for this because we need to sidestep any
filetype set previously by extension, such as `*.sh`.
misc cleanup
only mimic `funced` for files in functions dir
also look for /usr/bin/env in shebang
syntax checking using vim's compiler architecture
don't fish_indent in insert mode

Presumably this only happens with automatic formatting and since the
cursor is moved all kinds of crazy things happen and break.