Refactoring: clean up imports and remove dead code
Refactoring: initialize member variables in constructors
Break dependency between ResponseWriter and Socket
Break dependency between RequestReader and Socket