Pass info to TimeoutException in WebDriverWait

Signed-off-by: Luke Inman-Semerau <luke.semerau@gmail.com>
Squashed commit of the following:

commit b659115abb237bb3fc8e33d441c951d82333a566
Author: Michal Pichlinski <mpichlinski@opera.com>
Date:   Wed Oct 22 11:35:47 2014 +0200

    Keep all FileDetectors in file_detector.py module.

commit 314c30779d4ba457f83c32624851915ee719eab6
Author: Michal Pichlinski <mpichlinski@opera.com>
Date:   Tue Oct 21 08:53:59 2014 +0200

    Use LocalFileDetector as default one, get rid of setters and getters.

commit f99a14a5441801104f2bb06392fbd64e6aab10fb
Author: Michal Pichlinski <mpichlinski@opera.com>
Date:   Mon Oct 20 10:13:16 2014 +0200

    Make uploading files via python remote webdriver disabled by default.

    Uploading files via remote webdriver was originally added to java
    webdriver in the following commit:
    https://github.com/SeleniumHQ/selenium/commit/90d9a761df576d8f733628d519e429421dc3a3c7

    By default this feature is disabled in java and it can be enabled by
    setFileDetector.

    Python port of code was done in the commit:
    https://github.com/SeleniumHQ/selenium/commit/82f3da579826b5a694395d1e5efbe7bd95c5a2a7
    It has ported java feature without possibility of turning it on/off.

    This commit ports the rest of the java code, by making files upload
    disabled by default and adding possibility of turning it on via setting
    FileDetector.

Signed-off-by: Luke Inman-Semerau <luke.semerau@gmail.com>
if remote end returns a 400 level response status code, for python3 we need to decode the string so it doesn't fail later on when creating the exception to raise

Fixes Issue #8065