Add future keywords checking
toU16/U32/I32 => toUint16/Uint32/Int32
Better testing for toUint16/32/Int32
Add _integer and _toInteger

A safer toInteger, which it will eventually replace
Add floatToString and streamline toString

floatToString does not properly implement ECMA-262 9.8.1 yet
Fix Number.toString to handle Infinity, NaN better

Still broken in other ways, but a little better
Fix indexOf to use safer _toInteger
Fix numberToStringRadix to return "NaN"
Fix bug in String.slice with a (go) slice bounds violation

Basically, check that start is less than length before trying
to take a slice.

Also, rename valueToArrayIndex to valueToRangeIndex to reflect
the fact that it does not always return a value that is valid
index (value could be length)
Split builtin.go out to builtin_*.go
Fix subtle range bug in String.substring (uint => int64)

Was looking for negative in the following calculation:

uint(0) - uint(3) => uint(0)
Fix String.char*At to look at utf16 version
Fix toString(-0)
Use math.Copysign for unary negation
Fit number (exponent/decimal) formatting to ECMA-262 (slightly better)
Strip leading 0s from exponent