Use request and receive nifty timeouts.

Update the swift code to use the split timeouts for receive and read.
Update the swift code to use the split timeouts for receive and read.

Add a read timeout similar to the nifty code. There are now two
timeouts: the receive timeout which is the overall time that a client
is willing to wait for a response and the read timeout which is the
maximum time that the client will wait for the server to make
progress.