Correctly join rooms on Python 2

When running under Python 2, the 3to2 tool would change the type used in
an isinstance() call to determine if the room it was parsing from the
CHATROOM_PRESENCE was a string (non-passworded room) or something else
(assuming an iterable containing room,password).

Changing the explicit str to basestring will ensure both byte strings
and unicode strings are accepted, which will give the desired behaviour
on Python 2 and 3.

Fixes #117
Merge pull request #118 from zoni/issue117

Correctly join rooms on Python 2
Warn when missing 'webtest' package (needed for tests)

webtest isn't in requirements.txt because it's only required to run the
tests. This commit will make run_tests.py try to import it and fail with
a helpful error message in case it fails.
Also warn when trying to run tests while missing nose

Just in case someone hasn't got nose installed either.
Correctly pass timeout to Queue.get()

Else we may hang indefinitely :) Fixes #122
Allow changing sender of messages in test backend

Instead of completely hardcoding which jid messages are sent from, add a
sender attribute to the TestBackend class which may be changed to change
where messages are coming from.
Allow passing block to popMessage()
Merge pull request #123 from zoni/tests

Improve test framework. Nice simple one
Merge pull request #121 from zoni/webtest

Warn when missing 'webtest' package (needed for tests). thx
Python 3 doesn't have str.decode
py3 breakage on basestring
Merge pull request #126 from arrrrr/master

Python 3 doesn't have str.decode
Add err-markovbot to built-in list of plugins

err-markovbot is (oh surprise) a markov chain bot you can
see at https://github.com/MaxWagner/err-markovbot
Because no chatbot is complete without a markov chain.
Merge pull request #131 from arrrrr/shameless_plug

Add err-markovbot to built-in list of plugins