[web] Support dict payload for POST requests
[tools] Drop the lock() method from WillieMemory

We have an attribute named lock, everyone is already using it.
You can't have an attribute and a method with the same name like this.
[safety] Add a new module to warn against malicious URLs in a channel

This module uses the VirusTotal API right now. Support for additional
services / blacklists will be added in the future.
[safety] Properly add the section in configure()
[safety] Move service URL to the top for easier maintainence
[safety] Support the malwaredomains.com blacklist

malwaredomains.com is a blacklist of known malware domains.
This commit adds support for this blacklist, and a new mode for the module
to preform local lookups only - for private channels where privacy is
important.
[safety] Support simple whitelist configuration

To save API calls to virustotal, users can configure domains which are
"known good". It is recommended to use for frequently posted domain names.
[safety] Support regex based whitelisting

Easier than implementing subdomain globbing
[safety] Don't use unicode in print function

tools.py is stupid about that, we should really fix that
[safety] Update usage message for the safety toggle
[translate] restore custom useragent

Without this magic useragent translate doesn't work