Support for app retrieving metadata.

Using either the NSURLResponse or the NSError provided from the URL
loading system, the app can retrieve the SPDY metadata at any time until
the final delegate callback is made. This is achieved using an opaque
weak reference and a simple lookup dictionary, and relies on the
strong reference from SPDYProtocol to SPDYStream to SPDYMetadata.
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.
Improved logging with runtime levels.

Logging is now enabled for all build flavors. Levels can be turned on
and off at runtime, and this functionality is exposed externally. This
also exposes the ability to optionally set the logging dispatch queue.

The default for debug builds is DEBUG level (everything), while
release builds default to ERROR level. The app can also set the
DISABLED level, which will turn off all logging.

If no logger has been attached, then NSLog will be used, but only for
debug builds and only if the logging level is met.
Merge branch 'new-logging-simple' into develop-next

* new-logging-simple:
  Improved logging with runtime levels.

Conflicts:
	SPDY.xcodeproj/project.pbxproj
Additional metadata fields.

Adds blocked time, connected time, host address, and host port.

Blocked: time spent waiting for a session (connection) or time spent
waiting for the send flow control window to open.

Connected: time stream started relative to time the session connected.

Host address: IP address of endpoint session connected to.

Host port: TCP port of session connection.
Close remote side when issuing RST_STREAM.

After sending a RST_STREAM, the remote side will never send us another
frame. We need to mark it as closed to allow the stream to close itself
once the local side is marked as closed.

streamCancel worked fine prior to this change, but I refactored it here
a bit to follow a consistent code path.
Feedback from code review.

- comment fixes
- rename queue identifier
- SPDYMetadata can use "barrier async" instead of "barrier sync"
- rename "Host" keys to "Remote"
- clearly & stricter documentation in SPDYProtocol.h
- close stream directly after sending reset
- blocked time should only represent flow control window blocks, not
time waiting for connection or time waiting for data to send.
Merge pull request #83 from kgoodier/develop-next

Improvements in logging and metadata