Temporary commit -- will be restructured on another branch before merging
Added protocol agnostic search term hierarchy.
Added Search term visitor which allows different protocols to process search terms in different ways.
Added search term visitor for generating imap search queries.