Object Versioning: improved source code transformations

building all replacement nodes using constructors (instead of assembling
stmt-strings and parsing those to create the necessary AST trees)
Object Versioning: test case for source map generation
Object Versioning: cleaned up formatting of the transform tests