avoid failed encodings / stop bad charsets early

@bf4 @jeremy 

hotfix:
```Ruby
module NoInvalidEncoding
  def pick_encoding(enc)
    Encoding.find(super(enc)).to_s
  rescue ArgumentError
    "ISO-8859-1"
  end
end

class << Mail::Ruby19
  prepend NoInvalidEncoding
end
```
I think the logic here could be more clear. 

```plain
if we have an Encoding, use it
else find an Encoding by name
  if we couldn't find it, just use BINARY
```
whereas the code above doesn't read that way to me

so, maybe make a coercion method?

```ruby
  Encoding(encoding)
end

def Encoding(encoding, fallback_encoding=Encoding::BINARY)
  return encoding if encoding.is_a?(Encoding)
  Encoding.find(encoding)
rescue ArgumentError
  fallback_encoding
end
```