Refactor InfoBox / ErrorBox

- New common class VarBox
- Watches specified variable to cause refresh on change
- Will destroy self if variable is set empty.

This is going to help with two things, but haven't been implemented yet.

- Clearing InfoBox/ErrorBox without a user issued destroy, which means
  that we can dismiss the boxes with any keypress easily.

- Updating completion info quickly, and clearing on completion breaking.