Updating the RSS module to work with ZNC partyline

ZNC party line channels start with `~` characters (e.g., `~#bot`). This commit allows Willie to work with ZNC party line channels that contain this character.
[db] Add postgres support

 - use psycopg2
 - see #451
fix documentation
[tools] Do timezone conversion properly

Fixes #450
[clock] Fix typo (closes #453)
[url] Account for bad IRI edge case

Closes #447
[clock, seen, tell] Use timezone stuff from API
[tools] Fix error when config not given to time funcs
[remind] Use new timezone stuff

Closes #327
[tests] Don't check files in contrib/

It makes no sense to test those files with pytest.
[web] Security: verify HTTPS connections

Willie now verifies HTTPS connections when calling HTTPS-enabled web APIs.
It will use ca_certs from the config file,
and fallback to /etc/pki/tls/certs/ca-bundle.crt if ca_certs is missing from
config.

Verification of hostnames is done using backports.ssl_match_hostname.
This package is now mandatory to use willie.web, and is the most secure
and forward-compatible way (it's not needed in Python 3) to do hostname
validation.

Module authors specify verify_ssl = False in all web.py helper functions,
if they wish to disable https verification functionality.

Also change youtube.py to use gdata API over https, for easier testing
of this functionality.

Fixes #456
[web] Fix two silly bugs caused by last commit
[core]Fix windows exception reporting (close #457)
[core] Add bot.notice() and a notice parameter to bot.reply()

This allows modules to repond with NOTICE to certain commands.
bot.reply() accept a boolean parameter named notice, if it is set to true
the reply will be sent as a NOTICE to the originating channel instead of a
PRIVMSG.

This fixes issue #339
[config] Fix incorrect comparison in yes/no options

Fixes #459
[config] Minor tweak for better readability
[core] Security: proper validation of IRC server certificatee

I noticed this issue few weeks ago when I was writing elad661/ssl_cert_info.
Basically, the way I originally implemented certificate verification was shit.

It was shit because of few major reasons:
 1) It did not verify wildcard according to the RFC, and it ignored DNS fields
in the certificate
 2) It opened a connection to fetch and verify the cert CN, and only then
it opened the actual connection. A clever MITM attack could have bypassed
this easily, if it got the timing right.
 3) It was slow.

Due to the recently introduced dependecy on backports.ssl_match_hostname,
fixing this was easy.

This commit also removed the useless code we had in place to do the handshake
manually, and let Python do the work for us. This simplifies SSL handling code
in the core.

I also removed verify_ssl_cn() from tools, I hope nobody was using it because
that implementation was extremely wrong.
[core] Migrate from optparse to argparse

optparse is deprecated since Python 2.7. This commit migrates the code to
the newer module, argparse, which also simplifies our code a bit.

Fixes #445
[core] use from __future__ import print_function

This will make life easier when we port to Python 3.
[core] Remove debug print

This debug print got here in commit f770df5c0c, and should never have been
pushed. Sorry about that.