A recursive, test-driven implementation of Object.prototype.isPrototypeOf() (includes a non-recursive version too)