Object Versioning: cleanup..
Object Versioning: wrap global Objects/Constructors in proxyFor()

source transformation to wrap Array, Object, Function, Date, JSON,...
into lively.proxyFor()-calls to have them return proxies for new objects,
regardless of whether the objects are created using e.g. new Object(), or
just Object(), or Object.create().

as this change now also properly proxies Arrays in the benchmark, we reduced
the input sizes to the benchmarks to compensate for the immense slow-down...
just to not wait for ever..
Object Versioning: cleaned up module loading code
Object Versioning: delete-trap returns success
Object Versioning: have .proxyTarget auto-completion in dev tools
Object Versioning: add function names for more debug convenience
Object Versioning: proxy.proxyTarget() - function instead of prop
Object Versioning: always unwrap arguments to primitive functions

+ slight cleanup, including removal of the now unnecessary workaround
for deprecated setter/getter..
Object Versioning: hoist func declarations after transformations

we transform
    function funcName(..) {..}
to
    var funcName = lively.proxyFor(function funcName(..) {..})

to have the function wrapped but still available by name in the current
scope. however, function declarations get hoisted and while variable
declarations get hoisted as well, the assignment doesn't. we, therefore,
explicitly move the var-assignment statements we create for function declarations to the beginning of scopes.