Implement private variables, getter/setters and methods using Symbols

Example implementation for #684 

Not for merging, only discussion.

TODO:
- ~~Implement compiler flag.~~ Done.
- ~~Use compiler flag to selectively turn on new codegen.~~ Done.
- Only generate __symbol declaration when the current sourceFile has any classes with private members. The current code always generates it for every file regardless of whether it has classes or not.
- Tests.
- ~~Handle static and instance members with the same name.~~ Done.