Don't treat Structs as enumerable when generating description.

The code for generating descriptions for objects to diff was treating Structs as Arrays, this special cases them (as we do Hash) to prevent it from mangling them.

Fixes #575