when making multipart, drop single-part only data
Failing test for `body_set` inside `walk_parts`
be less efficient but more accurate

Without this change, we didn't call part_set unless we changed
number of parts or one of the parts became a new object.  This was
contrary to the documentation, which implied that you could just
edit the body of a message.

Unfortunately, the canonical form of a MIME message is in its
raw body, which is stored only when parts_set is called.  A better
solution would be for each part to be stringified as needed, just
in time.  I'd like to make that happen, but... not tonight.