Request now has a Write receiver method that will write to the passed io.Writer. Client now has Do method that will send the request and return the respons and any errors. Also Renamed the Client
field to Session, which was mistakenly changed.
Completed test to check that each method we support works and can produce valid requests. The requests are compared to requests that have been proven valid. This test also checks that the RTSP
client communicates over tcp correctly. i.e. we have set up a client and server, and we check that this communication happens correctly.
Added file header to main.go, and modified rtsp.go to work with cmd/stream/main.go. This change modifies writeRequest, which now takes a *url.URL. This means the Setup() method can parse a new
URL that contains a given track, and then give this to writeRequest.
tcp dial is now in new session, firstly so that we don't have to do the s.conn == nil check and also so that we dont't have to pass around the url everywhere.
Added them back because i realised I can't use http Requests and Responses and the accompanying methods because then this wouldn't be the RTSP protocol, it would be the HTTP protocol, which is not what we're doing.