Nearly all methods adhere to the same peculiar shorthand of allowing
several optional arguments, but always expecting a trailing hashref to
be attribute options. For various reasons, this is better abstracted.
The only significant behavioural change is that the first arguments to
input() can now be overridden with option values if undef (which seems
only logical).