Make types that extend Optional never be required

Otherwise, the default is that each parameter *is* required unless
annotated with "required = false", which for things like Buttons is
tedious, repetitive and error prone. There is no such thing as a
"required button" input.
Mark Buttons as optional, always

Fixes #57; see also c86fa7ddac26b9692dd0178b5bb0cea205d7eed1.