move the body copy out beforoe the http.NewRequest

This way we get at the body bytes before the request has a chance to
muck with it. I chose to use a 512bytesBuffer so I could use the copy
func on the body input. This commit makes all the tests pass