Consolidate repeated code and API references.

Specifically, we delegate to ast-util to handle unique variable names and injections of shared functions (e.g. `Object.defineProperty`). Our implementation of `[[Get]]` also is moved into ast-util.