Emit `{ range: false }` during normalization for non-numeric types.

Modify schema to recognize `Infinity` as valid for `length` and `range`
upper/lower bounds; refactor schema a bit to make unsupported properties
(e.g. `range` for a `string`) and `default` properties clearer.