Previously, this check was `value instanceof ZodType`, which breaks if
the user is using a different version of Zod than the library. Instead,
do the check using the structure of the input object rather than its
prototype chain.
Additionally, this adds a vendored version of Zod to use for tests, which
ensures that regressions like this would be caught next time.