'Fills in and submits the registration form.
Requires that the "register" form is visible.
This does NOT wait for the next page to load,
so the caller should wait for the next page
(or errors if that\'s the expected behavior.)
Keyword Arguments:
email (unicode): The user\'s email address.
password (unicode): The user\'s password.
username (unicode): The user\'s username.
full_name (unicode): The user\'s full name.
country (unicode): Two-character country code.
terms_of_service (boolean): If True, agree to the terms of service and honor code.'

def register(self, email='', password='', username='', full_name='', country='', favorite_movie='', terms_of_service=False):

    self.wait_for_element_visibility('#register-email', 'Email    field    is    shown')
    if email:
        self.q(css='#register-email').fill(email)
    if full_name:
        self.q(css='#register-name').fill(full_name)
    if username:
        self.q(css='#register-username').fill(username)
    if password:
        self.q(css='#register-password').fill(password)
    if country:
        self.q(css="#register-country    option[value='{country}']".format(country=country)).click()
    if favorite_movie:
        self.q(css='#register-favorite_movie').fill(favorite_movie)
    if terms_of_service:
        self.q(css="label[for='register-honor_code']").click()
    self.q(css='.register-button').click()
