This series improves tag change completion in various ways for commands like +, -, and *.
>From a user perspective, this provides command-specific prompts like "Tag message" and "Tag all" instead of the generic "Tag" prompt, and bases tag removal completions on the tags that are in the buffer, rather than the current tags in the database, providing a more predicable experience. >From an implementation perspective, this new tag removal completion behavior improves efficiency and eliminates a road block to fixing the tagging race bug (which otherwise results in massive queries just to compute removal completions). The new code is also more "Elispy" and predictable because all tag change prompting now occurs at the interactive entry points, rather than buried under several layers of non-interactive calls. This is a spiritual successor to id:1354263691-19715-1-git-send-email-markwalters1009 at gmail.com, though it takes a very different approach. This is also a prerequisite to the tag race fix in id:1381185201-25197-1-git-send-email-amdragon at mit.edu and I plan to send an updated version of that series when this one is accepted. Patches 1, 5, and 6 could be pushed on their own. They fix bugs or sort of bugs that get in the way of the rest of the series.