Maybe the right thing to do is the following:

- Have a `accepttermsandconditions` widget that is used to accept and re-accept the terms and conditions. This can be triggered with an event and we can pass in a variable that specifies whether or not it needs re-accepting.
- Have the register widget render its own Terms and Conditions, using the API call
- Have a `viewtermsandconditions` widget that just displays the Terms and Conditions

I can probably be convinced to merge the 1st and 3rd widget, but am not sure that's necessary.