Object Versioning: set __protoProxy on new versions of arrays
Object Versioning: dont match bound function as native code

(function() {}).bind({}) also prints to [native code] which we use
to identify actual native code as, for example, [].push..
therefore, this change adds a patch for Function.prototype.bind to
mark the resulting bound functions explicitly as being not native
given the function that has been bound wasn't actually native code.
Object Versioning: simpler and sufficient redraw at undo/redo

lively's morphs render using HTML elements and the DOM. we chose not to version
DOM objects (Nodes, CSSStyleDeclarations) but instead only the morphs and their
internal graphical objects (shapes, renderContexts), because the DOM nodes are
also referred by the actual DOM tree and we would have to update on version
changes which nodes should be currently in the tree (by updating the parent
relations both on the previous and the current version of such nodes).

to keep things simple for this prototype, we instead chose to throw away and
recreate all DOM elements for the current lively world. this way, the versioning
of worlds is also more equivalent to serialization of worlds in that only the
objects of our graphics abstractions (=the morphs) get versioned and not the
output of the current rendering technology (=HTML elements generated by the
current renderContext that could also be, for example, SVG)

we don't just redraw the submorphs of the current lively world as in the
previous version, because morphs that where submorphs in the previous
version (before an undo/redo or setting a specific version) would still be
part of DOM tree..
Object Versioning: also version when applying array mutator funcs

not only the set-trap but also the apply-trap needs to create new
versions of the target object (at least for the mutating functions
on an array)
Object Versioning: stop ticking scripts from future versions

when we do undo, we also want to stop ticking scripts (timeouts and
intervals) that have been started in future versions (and that
potentially also use future versions of objects or even objects
that are only available in future versions)
Object Versioning: test: whether anArray.push creates new version
Object Versioning: test: transformations of timeouts & intervals
Object Versioning: some clean-up after recent changes