Object Versioning: when proxying a function, proxy its prototype

reverts ec6ce95ff6, this needs to be the case so that an objectID-lookup
is also used to get the correct version of a function's prototype property.

however, this does assume that functions that get proxied once are _never_ used as constructors after unwrapping them.
Object Versioning: fixes a __protoID-versioning issue

makes __protoID property enumerable to have it copied to new versions
as well (through Object.clone)

--- with @bastiansteinert
Object Versioning: lookup __protoID-chain via delegate to proxies

instead of recursive functions, just get a proxy for the __protoID
and delegate to that proxy (to fire its traps)

--- with @bastiansteinert
Object Versioning: obj.isProxy() (instead of lively.isProxy())

--- with @bastiansteinert
Object Versioning: more global helpers, less test helpers
Object Versioning: micro benchmark for looking up prop in proxy

--- with @bastiansteinert