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.

Closes #1