Allocing and copying data slow? .reserve helps with the allocing. copying at machine level isn't all that slow. But in any case none of this matters because it finally dawned on me that there are bytes of zeros in the data and that won't work with strings. So I'm back to a byte array.
I'm getting closer. I'm pretty sure I understand what is happening now - the original code in Arduino ISP is really dependent on the larger serial buffer of the older IDE because it isn't reading the data as it arrives, but rather when it needs it. That worked fine as long as all of the request block fit in the buffer but with IDE 1.0 that's no longer true. I've made changes to improve this but I still have one timing issue.
More to come...