Refactor parser code, get tests to pass

This pull request refactors the parser module in two ways. First, it puts all the compiled regular expressions in one place, specifically the `re_cache` dictionary. Second, it changes the way that the `open_mail_archive` opens the for reading and parsing. It's now in a `with` block. Note that if the file is read using an iterator in the future, the iterator must be reduced to a value within the `with` block. If it's not, then when the flow of control exists the block, it will close the file, and cause the iterator to fail.