Button component.

Fixes #4