Extract widget select to its own component

Since this component is static, we can do this to avoid reconciling unnecessarily.

Auditors: alex
Use onChange instead of onInput

This gets rid of a warning in React v0.9.

Auditors: alex