Hookup reset flow (pt1) (bug 1003882) 

Just to add some context to this. Rather than continue with this branch (which is big already) I'm going to work on making this work alongside webpay separately so consider this part 1.

If anything is majorly wrong then I'll definitely fix it here. If not it'll happen in a follow up.

I'm not sure about that for watch given the engrained multiple callbacks it uses. Perhaps we can consider something like that in isolation?