Support primitives

This patch fixes the type checks for strings, numbers, and booleans so that the object equivalents of these primitives are recognized. Without this patch, values like `new String('world')`, `new Number(0)`, and `new Boolean(false)`, were not being recognized as strings, numbers, and booleans.