Add NumberInput component.

Resolves #288, Closes #289.