Grace mode now takes a clone of the request.

This is important since the original request is likely to be released before
Grace finishes. This would result in Params being released and possibly altered
by a new request. Aside from the potential race condition, this would mean that
the *Request in Grace might contain data from te wrong request.

Since using Grace in a goroutine is up to the caller, we leave it up to the
caller to also Clone the request.

Considered keeping a reference count for each request and only truly Closing
when the count was 0. However, Grace is likely to happen relatively rarely,
and the extra allocation seems like a much smaller price to pay than doing
reference counting on each request.