Object Versioning: proxy Worker, but "deeply" unwrap arguments

added global Worker constructor to list of global objects that need to
be proxied, but as this happens through source transformations and Worker.js
is loaded before the OV code, we also wrap it globally.

further, as the aWorker>>postMessage expects configuration objects, but can't
handle proxies, we unwrap the arguments to postMessage recursively..
Object Versioning: patch String methods that take regExp args

aString.match, aString.replace, aString.search, and aString.split
all might take regular expressions as first argument, but don't work
when that regular expression is a proxy. therefore, we patch these
built-in methods and unwrap all proxied regular expressions.
Object Versioning: Object.create(null) also gets isProxy func..

added our isProxy function to Object.prototype, but our implementation might
also come across objects that don't inherit from Object.prototype.
for that reason, we add id explicitly when Object.create is called without
supplying a prototype.
Object Versioning: transform regExp literals

/(?:)/; -> lively.proxyFor(/(?:)/;)
Object Versioning: patched Object.isRegExp to handle proxies
Object Versioning: don't handle anArray.indexOf as [native code]

Array.prototype.indexOf checks whether the argument is identical with any of
the thisArg's elements, but el !== lively.proxyFor(el).. so in this case, even
though indexOf is [native code], we best not unwrap anything.
Object Versioning: handle aFunc.apply / aFunc.call in apply-trap

when a function gets executed using .apply or .call we still need to
native code appropriately and to not have to repeat the special cases,
we normalize these meta-level calls in that we use the arguments to
to .apply or .call directly..

and we do this recursively, because there are places where aFunc in
aFunc.apply is again either .apply or .call...
Object Versioning: added and cleaned some tests