ngModel.challenge bound using $watch, no $timeout

Fixes #5.

Basically,  we watch for changes on the challenge, and update the model accordingly.
This ensures that we always have the challenge up-to-date in the model *AS LONG* as the scope has been digested, which will be the case if the user clicks the reload button and then types something in the data-bound response field.

I got rid of $timeout, as using it was the cause of the buggy behavior and it is not used anywhere else.

I'd write a test but, I do not know how to do that.