Refactor chunkstream

refactor such that chunk streams and messages share a buffer, this simplifies lots of logic keeping up with how much of a message has been read.