read all the bytes in 1 hit.

also, MCPMerger.readFully won't write past the end of the array if more
than 4096 bytes are available.

addresses #190 , following up on #190#issuecomment-14007916