Backport the unicode changes for RegistrationForm.

The recent unicode cleanup removed some ancient form encoding logic in
RegistrationForm. This logic wasn't really necessary nowadays, and
mostly just caused trouble, as it expected every field on the form was a
string. That made it difficult to subclass and use things like
dictionaries or lists.

This backports just the part of the code that deals with fetching fields
from the form.
Add better labels for the RegistrationForm.

RegistrationForm didn't provide labels for the password1, password2, or
email fields. This meant that any template that used RegistrationForm
had to in some way override the displayed labels. Now they have sensible
defaults.