Create custom SPDY delegate and refactor stream management.

New delegate the app can register for by using the SPDY NSURLRequest
category. Currently only exposes 1 callback for notification when a
request is complete. This will always be called just prior to the
connectionDidFinishLoading: callback in NSURLConnectionDataDelegate.
It will not be called for connection:didFailWithError: callbacks, which
will continue to provide the metadata in the userInfo.

Streams no longer "close" themselves. That is, once both sides are
marked as closed, the stream will no longer make the
connectionDidFinishLoading: delegate callback. Instead, the session
continues to check for a closed stream just like it used to, and when
it finds a closed one it still removes it from the active list. Now,
just prior to removing, it will tell the stream to issue the delegate
callback, and provides the necessary metadata to do so.

This actually simplifies the stream end-of-lifetime behavior in sessions
and brings the success and error cases closer together.

A few potential bugs around closing a stream with an error (which makes the
connection:didFailWithError:) callback subsequently leaving the stream
around and possibly calling connectionDidFinishLoading: were fixed.
Once you call either of those no more callbacks are allowed per Apple's
docs.