* fix(rules): reject nan/inf and overflowing token lengths
ParseTokens used ParseFloat and cast straight to int. Values like
"nan", "inf" and "1e20" therefore became a huge negative (or other
nonsensical) token threshold instead of an error.
* fix(rules): reject tokens at the float64 MaxInt boundary
float64(MaxInt) rounds to 2^63, so n > float64(MaxInt) let the
boundary through and int(2^63) becomes MinInt on amd64.