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.
how about:

```Ruby
def find_attachment_filename
  try_to_call(header[:content_type], :filename) || 
    try_to_call(header[:content_disposition], :filename) || 
    try_to_call(header[:content_location], :location)
end

def try_to_call(object, method)
  object && object.send(method)
end
```