Ticket #3455, Part 1/3. Allow proxy settings to be set per URL bar domain.

This patch modifies the nsIProtocolProxyFilter mechanism, so that
a protocol proxy filter receives a channel object rather than
a URI. Access to the channel object allows the proxy filter to
provide proxy settings according to the URL bar domain.
Ticket #3455, Part 2/3. Allow RFC1929 authentication (username/password) to SOCKS servers.

This patch is based on Ben's patch at
https://trac.torproject.org/projects/tor/attachment/ticket/6733/socks-username-6733-proxyInfo-9.diff
with a few changes:
- made nsIProxyInfo read-only
- added newSOCKSProxyInfo method to nsProtocolProxyService
- turned on necessary polling for SOCKS_WRITE_USERNAME_REQUEST and SOCKS_READ_USERNAME_RESPONSE
- got rid of debugging printfs