Add ProtocolError exception.
Spot trailers.
Pull headers logic into own function.

This is for use later down the line when we add support for provisional
responses.
Remove duplicate statement.
Fix exception class spacing.
Add a Stream.gettrailers() method.

This is needed so that we can lazily load trailers into the
HTTP20Response object. We don't want to force ourselves to download
every stream completely just in case it has trailers, but if we're asked
for them we need to be able to get them.
Add methods to HTTP20Response for trailers.

Right now these methods match the `httplib` API, but with 'headers'
replaced with 'trailers'. I'm not happy about this, and one day I hope
to be able to abandon the `httplib` API, but right now we just can't.
Test stream-level trailer function.
HTTP20Response has no attribute stream.
Test the HTTP20Response trailers implementation.
Update old integration test to use trailers.
Test that reading trailers reads all data frames.
Confirm three header blocks not allowed.