Use single default ssl_context in HTTPAdapter connection pool manager

Creates default SSLContext object for each HTTPAdapter that is expected to be used for https requests.

There are just a few small changes for:
- Adding a default SSLContext object only to the https HTTPAdapter in each session (not the http one)
- Creating the default object using the same urllib3 function that would be used to create a default SSLContext for each connection
- Adding ssl_context to poolmanager's connection_pool_kw to get passed down to all connections
- Pickling HTTPAdapter with the new attribute
- Breaking up the HTTPAdapter's send method a little (this is not related, I was just there anyway.  I'm happy to undo that if it's not wanted.  There are separate functions for getting the timeout and sending chunked now.)

Any feedback is welcome!  This is for https://github.com/requests/requests/issues/4322



# [Codecov](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=h1) Report
> Merging [#4409](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=desc) into [master](https://codecov.io/gh/requests/requests/commit/24092b11d74af0a766d9cc616622f38adb0044b9?src=pr&el=desc) will **increase** coverage by `0.06%`.
> The diff coverage is `92.15%`.

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

```diff
@@            Coverage Diff             @@
##           master    #4409      +/-   ##
==========================================
+ Coverage      89%   89.07%   +0.06%     
==========================================
  Files          18       18              
  Lines        2065     2077      +12     
==========================================
+ Hits         1838     1850      +12     
  Misses        227      227
```


| [Impacted Files](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=tree) | Coverage Δ | |
|---|---|---|
| [requests/sessions.py](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=tree#diff-cmVxdWVzdHMvc2Vzc2lvbnMucHk=) | `95.55% <100%> (ø)` | :arrow_up: |
| [requests/adapters.py](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=tree#diff-cmVxdWVzdHMvYWRhcHRlcnMucHk=) | `93.47% <92%> (+0.35%)` | :arrow_up: |

------

[Continue to review full report at Codecov](https://codecov.io/gh/requests/requests/pull/4409?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/requests/requests/pull/4409?src=pr&el=footer). Last update [24092b1...0614a3a](https://codecov.io/gh/requests/requests/pull/4409?src=pr&el=lastupdated). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments).


It’d be great to separate out the unrelated refactoring and supply it in a separate patch, please. 

A single SSLContext per adapter is not right, I’m afraid. An adapter can and will run across many different requests with different TLS settings. To get this to work properly you will need to transfer all TLS settings from Requests onto the adapter. You will also need to make this patch against the 3.0 branch, as it will break backwards compat. 

Thank you for the fast response!  I apologize for not looking at this close enough-- I can close this PR and make a new one against update-3.0 (?).

I think if I'm understanding right, it should still be OK to have one SSLContext per adapter, but make sure if 'verify' or 'cert' arguments are truthy for the 'cert_verify' method, I set conn.ssl_context = None there to avoid modifying the adapter's SSLContext.  Does that seem pretty reasonable, or do you mind pointing me where I should be looking for any other TLS settings?  (Sorry to bug, I appreciate the time to answer).

I think if the goal is to have the minimal number of contexts, we need to key off the various bits of TLS configuration and create the contexts lazily.