tags: Re-implement tags iterator to avoid having C++ in the interface We want to be able to iterate over tags stored in various ways, so the previous TermIterator-based tags object just wasn't general enough. The new interface is nice and simple, and involves only C datatypes.
Hide away the details of the implementation of notmuch_tags_t. We will soon be wanting multiple different implementations of notmuch_tags_t iterators, so we need to keep the actual structure as an implementation detail inside of tags.cc.
Move terms and tags code to a new tags.cc file. We want to start using this from both message.cc and thread.cc so we need it in a place we can share the code. This also requires a new notmuch-private-cxx.h header file for interfaces that include C++-specific datatypes (such as Xapian::Document).