Support object equivalents of 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.

Closes #1