core/lib/reflect.js: patched to allow fully virtual objects

use Proxy([target], [handler], true) to create proxies where the consistency
between trap results and the target's state is not checked. target is still
an object, array, or function to have proper typeof-operator results.
Object Versioning: use fully "virtual object"-proxies

= no consistency checks on the return values of proxy-handler traps
Object Versioning: made __protoID not enumerable again

__protoID shouldn't show up when using empty objects, e.g. when using
empty objects as sets and then iterating over them.
this also lead to an infinite recursion when creating traits..

this also means, however, that we'll need to copy __protoID explicitly
wherever the object is copied, which we'll do for now only when creating
a new version of the object
core/lib/reflect.js: changes from 0.0.9
Object Versioning: Array.prototype.concat -> unwrap target

was previously done via the [native code]-default in >>apply-trap,
but the recent reflect.js patches concat though [native code]-check
does no longer match..
Object Versioning: proxy XMLHttpRequest, but unwrap callbacks

onreadystatechange doesn't accept proxied functions (assignment has
no effect), therefore when 'onreadystatechange' is set on a (then)
proxied request it's unproxied explicitly..
Object Versioning: don't wrap global proxy, but transform evals

eval usually has access to the variable bindings of the function it
is called from. thus, code that gets evaluated can read local variables
and can define local variables. but when we wrap eval in a new function
as, for example, to first pass the code snippet through our source
transformation, code gets evaluated in the wrong scope and variables
defined in Global/window.

for this, reason we instead transform calls to the global eval and wrap
only the parameter into a call that transforms the code snippet
appropriately. therefore, as eval is no longer globally wrapped and
only source transformations therefore only active for eval's in transformed
code, we need to transform modules explicitly while loading them and also
explicitly patch all other relevant evals.
Object Versioning: transform all code that's loaded after OV