Resolved side effects from previous inheritance approach
This is a follow-up for
db23f8af33398c4851d6ba36436592f406b35a0d which introduced a flawed change.
The iteration over the prototype chain caused the prototype itself being bound to an object on runtime, conflicting with other objects.
The root cause was that some parts of the inherited functions were still bound to `constructed`, which was attempted to be fixed by poking the prototype chain.
This new fix is a bit weird, unless one understands that the call to `Reflect.construct()` is a bit tricky because any bound call inside the constructor of `legacyClass` will be bound to `constructed`.
This change is more of a sledge hammer approach, but it works all cases that I tested, including those that were initially the cause for the previous fix as well as new issues caused by the fix.