use a field object

There is a subtle condition where the free variable of the
  input is not managed properly. This is a mercury.partial issue

The partial will not re-evaluate the subtree unless args have
  changed. Which means you can do set todoField to '', have
  the dom set it to 'foo' and have the state set it to ''
  again. However if we do not render the 'foo' state then
  mercury.partial will diff '' against '' and not update
  the view.
updated html