PeerConnection cleanup

#### Cleanup the code in `PeerConnection` trying to make the code simpler and more maintainable. ####
A summary of the changes is the following:
* Align send methods in `PeerConnection` and `CryptoPeerConnection`; remove send_raw
* Disentangle `PeerConnection` from `transport.py`. This will make it easier to test it in subsequent PRs
* Remove excessive try blocks. Now the code will throw exceptions when something really goes wrong instead of catching all errors
* Remove an unneeded method