Improved shell (sh) support and a small C# tweak

This patch fixes a few issues with shell formatting by:
Ensuring that the '#' in ${#varName[@]} isn't taken as the start of a comment
Treating comments (#) as comments, not preprocessor statements
Treating a shebang (#!) on the first line  as a preprocessor statement
Adding vim, bash and egrep commands to langs/sh/reserved.txt
Adding += and -= operators (to default/ as they're used in many langs)

I modified default.txt to better identify variables by allowing them to be followed by space, operators, symbols or EOL (which should help langs beyond just shell) 

Also, I moved 'async' (C#) from reserved to modifier.txt