Fix encodings for mime headers and body if not UTF-8
Fix encodings for mime headers and body if not UTF-8

Summary:
If mails are not sent in UTF-8 we cannot just it verbatim, so we have to
encode it into UTF-8 if it is not the case. Mime headers use different
encodings like "quoted-printable", which we have to handle.

It looks like "Subject: =?iso-8859-1?Q?opr=E6t_s=E5_den_task?=", and can
be decoded by ##iconv_mime_decode##.

Furthermore the body of the email might be in various encodings as well,
which we attempt to pull from the content-type header of the plain text
part of the mail.

Test Plan:
Attempted receiving mails in a variety of flavors. These could be
converted to test-cases once i know if this is a sane solution. Got
expected results from mails sent with Windows-1252 and ISO-8859-1.

Reviewers: epriestley

Reviewed By: epriestley

CC: aran, epriestley, davidreuss

Differential Revision: 1093

hshackathons/phabricator-deprecated,ryancford/phabricator,WuJiahu/phabricator,kalbasit/phabricator,uhd-urz/phabricator,kanarip/phabricator,kwoun1982/phabricator,optimizely/phabricator,aik099/phabricator,devurandom/phabricator,akkakks/phabricator,r4nt/phabricator,freebsd/phabricator,hach-que/unearth-phabricator,wikimedia/phabricator-phabricator,NigelGreenway/phabricator,akkakks/phabricator,freebsd/phabricator,a20012251/phabricator,tanglu-org/tracker-phabricator,optimizely/phabricator,tanglu-org/tracker-phabricator,schlaile/phabricator,leolujuyi/phabricator,vuamitom/phabricator,eSpark/phabricator,codevlabs/phabricator,Symplicity/phabricator,UNCC-OpenProjects/Phabricator,gsinkovskiy/phabricator,Soluis/phabricator,cjxgm/p.cjprods.org,r4nt/phabricator,eSpark/phabricator,vuamitom/phabricator,hshackathons/phabricator-deprecated,librewiki/phabricator,phacility/phabricator,vuamitom/phabricator,phacility/phabricator,optimizely/phabricator,phacility/phabricator,hach-que/unearth-phabricator,Soluis/phabricator,huangjimmy/phabricator-1,codevlabs/phabricator,WuJiahu/phabricator,aik099/phabricator,wikimedia/phabricator-phabricator,memsql/phabricator,kwoun1982/phabricator,hach-que/phabricator,huangjimmy/phabricator-1,Automatic/phabricator,NigelGreenway/phabricator,hach-que/phabricator,shrimpma/phabricator,tanglu-org/tracker-phabricator,codevlabs/phabricator,kalbasit/phabricator,folsom-labs/phabricator,vinzent/phabricator,sharpwhisper/phabricator,uhd-urz/phabricator,denisdeejay/phabricator,huaban/phabricator,wusuoyongxin/phabricator,cjxgm/p.cjprods.org,MicroWorldwide/phabricator,leolujuyi/phabricator,folsom-labs/phabricator,sharpwhisper/phabricator,Automatic/phabricator,vuamitom/phabricator,sharpwhisper/phabricator,telerik/phabricator,Automattic/phabricator,Soluis/phabricator,schlaile/phabricator,kanarip/phabricator,wikimedia/phabricator,zhihu/phabricator,zhihu/phabricator,vinzent/phabricator,huangjimmy/phabricator-1,freebsd/phabricator,MicroWorldwide/phabricator,telerik/phabricator,benchling/phabricator,wikimedia/phabricator-phabricator,librewiki/phabricator,akkakks/phabricator,hach-que/phabricator,wusuoyongxin/phabricator,MicroWorldwide/phabricator,Automattic/phabricator,r4nt/phabricator,NigelGreenway/phabricator,wikimedia/phabricator,Automatic/phabricator,vuamitom/phabricator,NigelGreenway/phabricator,a20012251/phabricator,optimizely/phabricator,gsinkovskiy/phabricator,memsql/phabricator,shl3807/phabricator,devurandom/phabricator,matthewrez/phabricator,leolujuyi/phabricator,cjxgm/p.cjprods.org,WuJiahu/phabricator,folsom-labs/phabricator,Soluis/phabricator,Symplicity/phabricator,aswanderley/phabricator,Automattic/phabricator,jwdeitch/phabricator,coursera/phabricator,schlaile/phabricator,christopher-johnson/phabricator,zhihu/phabricator,Khan/phabricator,wikimedia/phabricator-phabricator,christopher-johnson/phabricator,zhihu/phabricator,dannysu/phabricator,telerik/phabricator,librewiki/phabricator,huaban/phabricator,denisdeejay/phabricator,apexstudios/phabricator,r4nt/phabricator,sharpwhisper/phabricator,christopher-johnson/phabricator,vinzent/phabricator,devurandom/phabricator,coursera/phabricator,akkakks/phabricator,sharpwhisper/phabricator,phacility/phabricator,librewiki/phabricator,hshackathons/phabricator-deprecated,zhihu/phabricator,aik099/phabricator,wangjun/phabricator,WuJiahu/phabricator,jwdeitch/phabricator,shrimpma/phabricator,vinzent/phabricator,Khan/phabricator,matthewrez/phabricator,wxstars/phabricator,wxstars/phabricator,zhihu/phabricator,wxstars/phabricator,shrimpma/phabricator,Symplicity/phabricator,memsql/phabricator,schlaile/phabricator,shl3807/phabricator,ryancford/phabricator,a20012251/phabricator,devurandom/phabricator,wxstars/phabricator,kanarip/phabricator,hach-que/phabricator,Automatic/phabricator,aswanderley/phabricator,eSpark/phabricator,apexstudios/phabricator,uhd-urz/phabricator,hshackathons/phabricator-deprecated,denisdeejay/phabricator,freebsd/phabricator,vinzent/phabricator,huangjimmy/phabricator-1,kwoun1982/phabricator,devurandom/phabricator,wikimedia/phabricator-phabricator,Drooids/phabricator,codevlabs/phabricator,christopher-johnson/phabricator,parksangkil/phabricator,ide/phabricator,folsom-labs/phabricator,memsql/phabricator,parksangkil/phabricator,a20012251/phabricator,shl3807/phabricator,jwdeitch/phabricator,kanarip/phabricator,Soluis/phabricator,Symplicity/phabricator,gsinkovskiy/phabricator,coursera/phabricator,memsql/phabricator,leolujuyi/phabricator,uhd-urz/phabricator,ide/phabricator,eSpark/phabricator,wusuoyongxin/phabricator,benchling/phabricator,dannysu/phabricator,ide/phabricator,hach-que/unearth-phabricator,dannysu/phabricator,optimizely/phabricator,eSpark/phabricator,codevlabs/phabricator,Khan/phabricator,wikimedia/phabricator,ide/phabricator,aswanderley/phabricator,gsinkovskiy/phabricator,aik099/phabricator,parksangkil/phabricator,hach-que/unearth-phabricator,wangjun/phabricator,kalbasit/phabricator,hshackathons/phabricator-deprecated,shl3807/phabricator,folsom-labs/phabricator,Drooids/phabricator,wangjun/phabricator,aswanderley/phabricator,a20012251/phabricator,tanglu-org/tracker-phabricator,Drooids/phabricator,wikimedia/phabricator,huaban/phabricator,christopher-johnson/phabricator,akkakks/phabricator,kalbasit/phabricator,dannysu/phabricator,gsinkovskiy/phabricator,UNCC-OpenProjects/Phabricator,NigelGreenway/phabricator,apexstudios/phabricator,benchling/phabricator,huangjimmy/phabricator-1,cjxgm/p.cjprods.org,matthewrez/phabricator,wangjun/phabricator,shrimpma/phabricator,Khan/phabricator,hach-que/phabricator,coursera/phabricator,hach-que/unearth-phabricator,parksangkil/phabricator,devurandom/phabricator,kanarip/phabricator,librewiki/phabricator,aswanderley/phabricator,ryancford/phabricator,benchling/phabricator,r4nt/phabricator,denisdeejay/phabricator,kwoun1982/phabricator,matthewrez/phabricator,cjxgm/p.cjprods.org,jwdeitch/phabricator,MicroWorldwide/phabricator,kwoun1982/phabricator,uhd-urz/phabricator,huaban/phabricator,UNCC-OpenProjects/Phabricator,tanglu-org/tracker-phabricator,ryancford/phabricator,wusuoyongxin/phabricator,Drooids/phabricator,dannysu/phabricator,UNCC-OpenProjects/Phabricator