Fix Python 3.3 and 3.4 tests

3 tests were failing on Python 3.3 and Python 3.4. This was mostly due to different string representations for exceptions in Python < 3.3 vs newer versions. One test was failing due to the inability to set a function name via an assignment to `__name__` for a function wrapper in `typing.overload` in Python >= 3.3. A better way to do it is to use the `functools.wraps` decorator.

This PR is based on PR #24 since it requires running automated tests on all Python interpreters supported by typing.