Clean up generated code for symbols transformer

This identifies a few cases where we do not need to use the runtime

If comparing the result of typeof with a string we only need to use the runtime if the string is 'symbol' or 'object'.

Skip the runtime for member[0] since a non string member expression cannot overlap with the keys we are using for symbols.

Also, fold the TypeofTransformer into the SymbolTransformer.

Fixes #874