Change input.register to take a definition table

Since it's desirable for inputs to have a description,
and this makes it match other register functions, such as
command.register().
Grammar

Closes #11.