Remove dead code from transport.py

### Motivation 
After close inspecting, it turns out that large parts of code in `transport.py` are never really used. This includes the old handshake protocol and various other methods. 

### Changelog
Because it is hard to believe that all this code is unused I tried to clean it up following a thorough process:

1. I abstracted the methods of `TransportLayer` that were overridden by `CryptoTransportLayer` and nowhere invoked outside `TransportLayer`. All such methods were made to `raise NotImplementedError`.

1. I searched for and removed unused methods. This was done in multiple iterations, as each additional method removed revealed more unused code.

1. I removed unused code from other modules, namely `network_util.py` and `protocol.py`.

1. I removed all test code that was testing or mentioning dropped code.

1. I finished the cleanup doing some style fixes and other changes in `transport.py`.

This PR was co-authored by @Renelvon.
It isn't strictly necessary to have it as a separate class. Now that the unused code is gone, you can see what `TransportLayer` really is right now: a callback manager. So, once this is in, I 'll move all its irrelevant attributes to `CryptoTransportLayer`, rename it and lace it with tests. Let's do it step by step.