Start accepting extra socket options

Early review is always welcome (not that I've much done yet).
Took me a second to realize how this works (i.e. that tcp_nodelay == 0 by default, very subtle with the empty list). I think this whole thing can be written as:
```python
if self.proxy:
    self.conn_kw.setdefault('socket_options', [])
```
or since it's so subtle
```python
if self.proxy:
    self.conn_kw.setdefault('socket_options', [(socket.IPPROTO_TCP, socket.TCP_NODELAY, 0)])
```
just because explicit is better than implicit. Up to you though.