Limit frame size in buildDataframe instead.

bufio will send large writes directly to the writer, which was not
the intended effect of limiting the size of it.

Just put a cap inside buildDataframe.
Don't send window updates when we have everything buffered.
Less magical error handling on write.

Should make it obvious that there is error handle going on. It also
makes it possible to do more strict validation on sending format.