Fixes #408

Includes the features mentioned in the comment for #408
The reason for using a stringbuilder to build the message isn't just for efficiency.  Dumping the message all in one go keeps Unity from wrapping the messages in all that verbose mess and keeps the dump contiguous.