Merge latest "develop" changes.

Changes from "new_dispatch" conflicted with changes here, notably
around the closing of a stream. Changes were made to that code,
the handling of a pushed stream with no data, unit tests frameworks
and code, and a few other little things.

Also had to change the session to stream delegate for "cancel" to
include a status code for the RST_STREAM frame, as cancel wasn't
sufficient.