fix charset getting reset to nil unintentionally
Collapse adjacent =??B? words losslessly

Before this change the code assumed you could concatenate two Base64
strings, which is not true.

This fix relies on non-standard behaviour of our parser: RFC 2047 says
that encoded-words MUST be separated by at least a space, but we happily
parse two unseparated encoded-words.

Fixes: #560
Fixes: #561
Broken-since: 2.5.4 (cb8162165b61c5a65da37341f13f4e40c8d5bcb1)
Add a spec for non-space-separated encoded-words

RFC-2047 says that encoded-words MUST be space separated, but Gmail and
iOS mail also parse directly adjacent words; so we should too.
Merge pull request #552 from yinquanteo/master

fix header's charset getting reset to nil unintentionally
fixed bug when sending .string message to an unstructured field
fixed Encoding::ConverterNotFoundError in lib/mail/message.rb:2066

by some reason we were receiving the error.
/lib/mail/message.rb:2066:in `encode': code converter not found
(Windows-1258 to UTF-8) (Encoding::ConverterNotFoundError)