Remove all traces of extended delegate.

Settings a non-primitive type in the NSURLRequest properties generated
an error when the request and response were being cached to disk, so
we're going with a different solution. This removes all code related
to the extended delegate, including the unit tests.

A new way to test the metadata and know definitively when a request
has finished is included here by mocking the NSURLProtocolClient
protocol. This should be very useful for future tests, especially ones
that want to act like an app.
Store the identifier rather than the timestamp.

Besides making more sense, will save some cpu cycles generating
the identifier and when comparing it in the dictionary.