Fix Subversion repositories on hosting services.

The Subversion code expects to be able to access Subversion repositories
directly. This works fine, except when accessing through a hosting
service and needing a login/password. The Subversion code expects
repository.username and repository.password to be filled in.

There's now a Repository.get_credentials() function that fetches the
username/password from either the repository or the hosting service (if
it otherwise stores the password). This allows the Subversion support to
log in appropriately.

There are other SCMTools that also make use of the username/password, so
I've updated all call sites to use get_credentials. This will allow us
to do stuff like use decrypt_password in a central place in the future.
Add support for the Unfuddle hosting service.

This supports Unfuddle as a hosting service. Unfuddle provides Git and
Subversion hosting.

Unfuddle's pretty straightforward to support. It makes use of HTTP Basic
Auth, and requires base commit IDs for posting.

There's also some improvements to RepositoryForm to provide more data to
the HostingService's authorize and check_repository functions.
The Unfuddle support uses this to do better validation of a repository
and an account, which we should make use of for other services.