unify the hsOperator pattern and improve handling of `.`
treat a #! line at the start of a haskell source file as a comment
match a list of function names between `where` and `::`