Does scanning the body's raw_source work for other transfer encodings?

Seems we'd need to decode the body before munging it.

It'd probably be clearer (and simpler) to return *new* MIME parts rather than alter them in-place.

Implementation-wise, you can eliminate the regexp captures and do one gsub:
```ruby
part.body.raw_source.gsub(/cid:[^\s'"]+/) do |uri|
  if referenced_part = content_for_uri(uri)
    encode_base64_data(referenced_part)
  else
    uri
  end
end
```