Improve performance of Message#find_attachment

This is faster because we,

- Don't trigger exceptions for flow control.
- Retrieve each header only once (at most).

The exceptions this was throwing were particularly expensive for us on jruby. This change cut our mail processing time in half for a particular task.

The tests are passing with this change but it's possible that the `rescue`s in the previous code were catching other exceptions that will now bubble up. We could add a `rescue` to `find_attachment_filename` to catch those.
I agree in principle, but it would be a change in behavior.  I'd rather handle that separately.