Change private names pass to a symbol pass

This introduces a Symbol global. If the symbols option is true it transforms member expressions to ensure that the symbol is never exposed as a string. If the symbols option is off then symbols toString into a unique string making them still work, but leak in reflection methods.

The code gen for this was greatly simplified from the previous private name pass. This was made possible because we no longer support trapping member lookup so now it is enough to just transform the member expression (in the case of set we still transform the whole thing because the if we only transform the member expression we would need 3 temp variables).

This also gets rid of the `@iter` module and the correct way to get the iterator symbol is to do `Symbol.iterator`.