Allow ClientResponse to define custom flow control

Also make DataQueue act as like as StreamReader to let FlowControlStreamReader get able to be replaced by FlowControlDataQueue preserving the common behaviour.