Avoid calling isNumericString() from isNumeric().

Most calls to isNumeric() are for identifiers, and isNumericString()
ends up being called, which is expensive because it creates a new
string.

This patch adds a simple check that avoids the need to call isIndex()
and isNumericString() in these cases. This avoids 10s of MiBs of
allocations per lap in the racing demo.