Track bytes sent and received per request.

Each stream tracks on-the-wire bytes transmitted and received. This
accounts for all SPDY framing and stream-related control messages,
but does not factor in non-stream-related control messages.

These fields are not yet properly exposed to the application, as using
the metadata mechanism (adds to response headers) happens too soon,
before the body has been read and accounted for. tx_bytes should be
accurate, though.
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.
SPDYDelegate uses app-supplied dispatch queue.

Making the callback to the app's delegate should not be done on the
IO thread, so this change allows the app to supply a dispatch queue
to use for the callback. Or, if none supplied, it uses default global
queue.
Fix unspelling error.
Change delegate callback threading.

Allow app to use either an NSRunLoop or an NSOperationQueue for the
delegate. Clean up interface for providing these, and set default
values that match NSURLConnection when no runloops or queues are
provided.
Change error sentinel from 0 to -1 for frame encoder.
Undo unit test build change to attempt to fix Travis.
Expose encoded length on the frame object instead of in the decoder