Fix duplicate display of headers

This separates the code dealing with
the case "display all headers" from the case
"display selected heders" in `MesageTree.construct_header_pile`
and ensures that 1. in "all in" case, no headers will be duplicated
and 2. in the filtered case, the order of headers given in
the whitelist parameter) is preserved.

fixes #601
Merge branch '0.3.4-fix-headers-601'