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 
@JonRowe @myronmarston
IMO, we should add unit tests for ```surface_descriptions_in``` for each use case:
```ruby
it 'works with Hash'
it 'works with nested Hash'
it 'works with Struct'
it 'works with enumerable object'
# etc...
```
perhaps we'll discover other problematic object types...