[doc] Add documentation for .notice() and the notice parameter in .reply()
[core] Check python version earlier, also check for 3.3

Since argparse is not present in Python 2.6 and Python 3.2, we can't wait
until after parsing the args to show the "python version too low" error.

This commit fixes this by checking the python version before parsing the args.
This commit also makes sure we display a meaningful error message
for people who run Python 3 older than 3.3.
[core] fix a small mistake in my last commit
[rand]: Check user input is valid

* Check if user input is valid and print a corresponding message if it's
not
[admin]: Check if user input is valid

* Check if user input in .me and .msg is valid
[calc]: Check if user submitted input

* Verify that the user submitted input to be evaluated
[web,movie] Unicode and Python3 fixes

web.py now makes sure to quote url parameters before passing them to urllib.

This commit also fixes movie.py to properly handle unicode, fixes
web.quote to properly handle unicode and python3 andfixes web.urlencode for
python3.

Thanks to Erethon on freenode for showing me the url issue.
Merge pull request #464 from Erethon/feature-fix-modules

[rand,admin,calc] Check if user input is valid
[rand] use sys.maxsize instead of sys.maxint

Python 3 does not have sys.maxint, because int is limitless in Python 3.
On most setups in Python 2, sys.maxsize equals to sys.maxint, so using
sys.maxsize should not be a problem.
[core] nitpick: don't use u'' strings

We use from __future__ import unicode_literals, so the u before the string
is meaningless
[core] fix typos introduced in last commit

I blame those pesky newlines and whoever thought that this kind of line breaking
is a good idea.
[core] fix pedantic newlines in error()

PEP8 was invented to make code MORE readable, not less. This insane amount of
line breaking makes this code much less readable, hence it's better to go over
the 80 char limit a bit.

Anyone who changes these back to the previous formatting will be cursed by the
gods of code-readability.
[core] Better unicode handling on message sending

This commits makes sure that even if a module sent us bytes, or a str
that came out of .encode(), we will always send it properly and never fail
on various AttributeError exceptions (bytes don't have .encode()) or
UnicodeDecoteError exceptions.
[core] Don't preform useless re-conversion

Since you never override text when encoding, there's no reason to override
it again when decoding.
[core]: Fix bug introduced in commit 222b1f4

* If text was already encoded in utf-8, the variable encoded_text was
never set and was needed further down in the execution path.
Merge pull request #466 from Erethon/feature-fix-bug

[core]: Fix bug introduced in commit 222b1f4
[core] Fix a unicode warning and a potential problem with message splitting
Decode IMDB API output as utf-8

I noticed that .movie sometimes generates a UnicodeDecodeError
exception, e.g. issuing '.movie gravity' produced:

  UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position
  151: ordinal not in range(128) (file "willie/modules/movie.py", line 26,
  in movie)

Adding an explicit 'utf-8' to u.decode() on the IMDB API result resolves
the issue for me.
[Clock]Change 'oops' to something... useful-ish.
Merge pull request #470 from rameshdharan/master

Decode IMDB API output as utf-8