Stubbing out Connection, Stream, and other types.

Stream manages state transitions and associated error cases, and the
'pump' which will drive client writes. Working on Stream unit tests.

Also pinned down the Error type, including error levels and it's
relationship to recoverable errors (like stream stalls, or race cases
requiring lenience), and how parsed GoAway/RstStream are mapped to
Error instances.

Added stub classes for flow control and managing the write queue.
Stream push-promise and headers transition tests

Testing of remaining state transitions is TODO.

Also add string conversions for named constants.