Draft: FrameParser: Untangle raw Frame construction from IO logic to enable cancel-safe futures
To address #8, looking for feedback so far
Since read_exact is inherently not cancel safe, means we need a way to handle EOF conditions explicitly. I suggest we remove the read_exact method from the AsyncRead trait, and make the EOF part of the library's error type. See the TODO in recv_async_stateful. I also still need to write some decent tests.
I am not sure whether I would prefer an AsyncReceiverStateful, or to have a another generic on AsyncReceiver, and just make "specialized" impls, as is done currently in the PR. I think AsyncReceiverStateful would be a terribly long name, but the generic is also a bit noisy. So I am not really sure.
This also removes the need for the HeaderStart mini-parser, which I do not believe was used elsewhere. I also took the liberty to un-unsafe the Header::try_from_slice_unchecked and add in a doc-comment instead, since it is just an internal method that may panic.