1) Discard expected blank lines between parts for discardPart
and copyPart. Otherwise we treat these null parts as as
text/plain and actually attempt to format them.
2) When processing a multipart as a whole (say for formatWithExternal,
then we need to restore the parent's boundary marker since
the parsing of the multipart header will necessarily include its
own boundary marker which we don't want use.