Python 3: exceptions don't have message attributes
Python 3: more idiomatic feature testing

Using sys.version_info isn't really a future proof way of testing for
functionality, not least because

    sys.version_info[0] == 3

fails when Python 4 is released!

Instead, actually check whether the required functionality exists in the version
of Python being used, and provide alternatives if it's not.

I've also removed anything to do with next(...), as Honcho supports back to Python
2.6, which has the next(...) built-in function. This should be used consistently
throughout the code in preference to the foo.next() method.