Bug fixes and improvements
- When request.Send needs to send the request again, it rewinds its io.Reader properly.
- It also means the given io.Reader must be io.Seeker for request to be attempted more than once
- use reflect less
- request.Send can send byte slices as application/octet-stream