Add "Coverage" configuration with code coverage flags set.

- new build settings
- integration with Coveralls.io when using Travis CI
- workarounds for Apple bugs

"Coverage" config is based on "Debug" but enables "Generate Test Coverage
Files" and "Instrument Program Flow" for builds. Unit tests use
this configuration now instead of Debug and also set a COVERAGE=1 flag,
for conditional use in the code.

.gcda and .gcno files are now generated, and live in
~/Library/Developer/Xcode/DerivedData/SPDY-fkxxegoemtsttmayyuvejarxgimy/Build/Intermediates/SPDY.build/Coverage-iphonesimulator/SPDYUnitTests.build/Objects-normal/i386

They can be opened with something like CoverStory locally after running
the unit tests. On Github, our integration with Travis will produce
Coveralls data for pull requests and inserts a little coverage badge.

The Travis build uses the cpp-coverage utility (coveralls) to produce
reports for Coveralls.io ingestion. This tool requires the source code and
the coverage files to be located under a common root, hence the copy into
the "gcov" directory. Finding the location where Xcode puts the
intermediate files is non-trivial, so we take advantage of the fact
Travis gives us a clean slate each time.

SPDYSenTestLog.m is created to workaround a bug where no .gcda files
are generated for certain combinations unless they are explicitly
flushed. It's unclear exactly when this happens, but simulator 7.0 is
affected, and simulator 8.0 with Travis is affected.
Merge pull request #86 from kgoodier/feature/code-coverage

Add "Coverage" configuration with code coverage flags set.
Avoid use of CFAbsoluteTime as much as possible.

A helper class SPDYStopwatch is introduced here to abstract common
time management duties from the rest of the code.

Since CFAbsoluteTimeGetCurrent() is affected by clock and timezone
changes, it's use should be avoided. mach_absolute_time() is unaffected
by clock changes, but is susceptible to overflow issues (which can be
worked around) and doesn't increment while the system is asleep (which
cannot be worked around). However, it has more appropriate behavior.

Our use of CFAbsoluteTimeGetCurrent() for the timers is unavoidable,
since Cocoa timers are based on it. This seems like it would present
undesirable behavior for our deferrable and connect timers if the clock
were to change, but there's not much to do about it.
Support "absolute time" for measurements and revert.

After discussion, we decided to revert back to using CFAbsoluteTime for
timing operations. There are pros and cons of each approach, and it
boiled down to basically "keep doing what we were doing since it wasn't
obviously broken". This will keep the metadata timing values consistent.

The things being measured -- latency, connected time -- are really
wall-time measurements, and having them affected by sleep time is odd.
Merge pull request #87 from kgoodier/review/absolute-time

Avoid use of CFAbsoluteTime as much as possible.
Fix early release of SPDYMetadata.

Depending on how the NSURL loading system deallocs the protocol,
the SPDYMetadata could be released before the didFinishLoading callback
even executed, or in the middle of it. It seems that iOS 8 releases
the protocol earlier than iOS 7 did.

This change removes all the dictionary code to map identifiers to
SPDYMetadata instances and instead just associates the metadata instance
with the identifier instance. A unique identifier instance is returned
for each associated dictionary it is insert into.

As long as the NSString* identifier is alive, the SPDYMetadata for it
will also be alive.