Improve the design of DevicePort and DeviceSocket
For devices using serial connection, the multiple inheritance schema is very confusing. Methods from DevicePort call methods from DeviceSocket, assuming that they exist (PyCharm can't locate them).
See, e.g. DevicePort.handle_read
, calling self.collect_incoming_data
and self.found_terminator
For a device implementation, refer to e.g. DevicePeakTechPort