[RFC] Only alter Identifiers to avoid conflict.

This is just a request for consideration, so treat it as such. All tests pass, but that doesn't mean I haven't missed something important. Lookin' for feedback!

The concept here is to do as little modification as possible to the original source, only doing so to avoid conflicts within a scope.

This also fixes an issue where all of the top-level scope is accessible, regardless of being exported. It patches this issue by modifying the names of non-exported top-level Identifiers within a module. See added test which fails before this diff.