Add support for recursive multipart messages
Before this commit, parsing the test file would just return
and more plain text because it is the largest text part.
This uses message.get_payload() instead of message.walk(), because
message.walk() implements a bottom-up DFS; but with no easy way of
propagating information between nodes.