Store currency number as string

When the numbers with leading zeros are evaluated with JS the
leading zeros are lost. Even worse, when parsing with a strict
ecmascript parser like esprima, the leading zeros cause a parse
error.

As a result, the number() function now accepts a number (for
backwards compatibility) or a string. A number is converted to
a string before lookup.