This is probably the worst patch that I have ever written!
We add a setPrivate method to nsIPrivateBrowsingChannel which will be
implemented by channels who care about private browsing. This allows the
client to explicitly override the private bit on the channel.
NS_UsePrivateBrowsing is also taught about this override bit using the
internal nsIPrivateBrowsingChannel::IsPrivateModeOverriden API. This patch
implements the new API for HTTP, FTP and wyciwyg channels. This also
modifies the IPC implementations of these channels to correctly transfer that
bit to the parent process if it has been set in the child process channel.