improve proxy bypass on Windows 

See #3976

# [Codecov](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=h1) Report
> Merging [#3979](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=desc) into [master](https://codecov.io/gh/kennethreitz/requests/commit/26ab951300d192ed3ab62fdb1f0548c961731e6a?src=pr&el=desc) will **decrease** coverage by `0.02%`.
> The diff coverage is `100%`.

[![Impacted file tree graph](https://codecov.io/gh/kennethreitz/requests/pull/3979/graphs/tree.svg?token=mZGswIiXLa&src=pr&height=150&width=650)](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=tree)

```diff
@@            Coverage Diff             @@
##           master    #3979      +/-   ##
==========================================
- Coverage   89.76%   89.74%   -0.03%     
==========================================
  Files          15       15              
  Lines        1955     1940      -15     
==========================================
- Hits         1755     1741      -14     
+ Misses        200      199       -1
```


| [Impacted Files](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [requests/structures.py](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=tree#diff-cmVxdWVzdHMvc3RydWN0dXJlcy5weQ==) | `100% <ø> (ø)` | :arrow_up: |
| [requests/compat.py](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=tree#diff-cmVxdWVzdHMvY29tcGF0LnB5) | `100% <100%> (ø)` | :arrow_up: |
| [requests/utils.py](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=tree#diff-cmVxdWVzdHMvdXRpbHMucHk=) | `86.25% <100%> (+1.26%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=continue).
> **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta)
> `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
> Powered by [Codecov](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=footer). Last update [26ab951...5c389cf](https://codecov.io/gh/kennethreitz/requests/pull/3979?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


As first step I added tests to check the current behavior (they take around 30 seconds to run on my system) so we can detect regressions in the new implementation. 

Tested with Python 2.7 and 3.5.

Well coverage drops obviously as these tests are only run on Windows :-/

From my POV this is ready to get merged, please review.

The code is copy pasted from Python 3.5's urlib/request.py with the lines doing DNS lookups (and appending to `host`) removed. I would recommend leaving it as is (maybe add a clarifying comment about this).



I'm a bit disinclined to do that unless we think this is going to be temporary code (which it won't be until we drop 2.7 support at least). If we are going to support it I'd like the code to be sensible and comprehensible. 😃

@Lukasa Please give me a note when AppVeyor tests are working. Then I'll udpate this PR.

@Lukasa Should I revert c121b98c4eb1e4ee8927995d9b9f1d6bdccd9349? With this PR there is no reason anymore for caching the results...

@schlamar Yeah, might be worth doing.

close/reopened to get appveyor to re-run

It'll need to be rebased on top of master. 

@Lukasa @nateprewitt Updated, please review again.

BTW, coverage drops because reverting 8e6e47af43d1d89a0201bd58e97c700bebbddd5e and c121b98c4eb1e4ee8927995d9b9f1d6bdccd9349 removes a lot of covered lines. My changes alone do not negatively affect coverage.

@schlamar Based on codecov's output the actual reason you're reducing coverage is that the diff isn't covered enough to avoid regressing it. To match coverage you'd need to cover 90% of the diff, but only 86% is covered. You can see the lines we're missing [here](https://codecov.io/gh/kennethreitz/requests/compare/26ab951300d192ed3ab62fdb1f0548c961731e6a...32a34722be08aecb6af10ff249480bb255831ff3/diff): what are the odds that we can write tests that appropriately cover them?

@Lukasa Updated, please review again :)

When was the proxy bypass cache introduced? I'd like to make a reference but can't find anything in the changelog :)

@schlamar, I believe it was only a couple months ago (#3885).

Ah yes, this wasn't even released yet. @Lukasa in this case I would ignore this?!

Yeah, you would. =)

:tada: