fix `myObj.constructor(a, b, c)`

by breaking `new MyClass([a, b, c])`, but making `new MyClass(a, b, c)` now do what you expect. Instead of re-using the same function that's called externally to instantiate the class or the actual prototype extension, have a separate `alloc` noop just for actual prototype extension, and call `new` on that noop when subclassing.

add test case for `.constructor`, and change test cases for init to expect the new behavior of `new`.