Allow SPDY_INSTALL_SDK to be overridden

This change allows an external project to pass in a custom install script and configure so that the framework can be build as a subproject for debugging purposes
a few minor styling changes
Remove unrelated change to fix the build script
Merge pull request #62 from StanTwinB/develop

Allow SPDY_INSTALL_SDK to be overridden
Update project for Xcode 6
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
Fix bug with removing a stream while fast iterating.
Unit tests for stream closing iterator bug.

This provides a crude mechanism for mocking the SPDYSocket and
SPDYSession without introducing a lovely dependency like OCMock. That
should be considered for the future, but for now, this works.

The beginnings of a SPDYSessionTest class are here, but it's still
sparse and needs more filling in. A mainline case for the tx_bytes /
rx_bytes / metadata change are here, as is a test case for the
"closing and removing a stream while iterating throws exception" bug.
Fix SPDYFrameCodecTests, need to reference new encodedLength.

Also fix bug where SPDYDataFrames had no length set, and 1 test warning.
Add "origin endpoint" and proxy configuration.

Connecting to an origin no longer means we simply connect to the origin's
host/port pair. If there is a proxy in between, then the host/port is
different. A SPDYOriginEndpoint represents the actual network host/port
being connected to in order to reach the origin. Also, there may be more
than one proxy that needs to be tried, if the first one fails.

All the code for interfacing with Apple's proxy configuration APIs
(CFNetwork*) is included here.

This code is not used anywhere yet in this change.
Add proxy support in SPDYSocket.

This change adds support for connecting to one or more HTTP proxies. If
a connection fails, the next proxy is tried, and finally the direct
connection is attempted. This all happens internally in SPDYSocket,
and the interface it exposes remains nearly identical in behavior.

Still need to implement proper proxy connection timeouts and clean up
some TODOs.
Unit tests for socket operations and refactor.

Refactor SPDYSocket*Op classes into another .h/.m pair.

Unit tests for SPDYSocket*Op classes, in particular the parsing done
in SPDYSocketProxyReadOp.

Start unit tests for SPDYOriginEndpoint, but needs a lot of work still
to test the proxy config code with synthetic data.
Clean up TODOs and fix connect timeouts.

Cleaned up some comments and debug loggings.

No need to address "excess" bytes after receiving a proxy response,
since we will not have sent anything yet to the origin.

Implement connect timeouts. Using 1 timer that lives for the duration
of the proxy connect. Careful handling of close conditions required.

Made the _close method actually attempt the next proxy connection,
if there is one. Only 2 situations call close while connecting to a
proxy where we don't want to try another connection:
  1. connection timeout
  2. no more endpoints available
In these cases, we want to notify the app of the disconnect and error
and shut everything down.