Split "multi-purpose" constructor of ClientDriver into two
Added documentation
Refactored HandleFinishedRead into multiple smaller functions