Use Timeout Conn wrapper to set read deadline for downloading layer

#2461 is about CDN server side connection lost and #5848 fix that by resume downloading, but sometimes with client side unstable network (like public wifi), the docker server may be waiting this connection for long time, the Conn.Read(p) by default is blocking mode, I observed sometimes it doesn't timeout over 30 minutes, or may block for ever, the only way to recover from such scenario is to restart docker server which is bad.

This fixed first part of #6024, I believe this is different issue with #2461.

Docker-DCO-1.1-Signed-off-by: Derek <crq@kernel.org> (@crquan)