Optimized data transmission structure

Extracted send functionality from Client into DataSender. DataSender
and DataReceiver are both subclasses from AbstractTransmission