Adds NumberInput

Do we need the defaulting to empty string? If so, it's in the wrong place. We'd have to default `value` to empty string *before* calling `replace` on it.