Keep filter names the same as they are in production.

We'll shorten and simplify them in the Query Language Refresh, keeping the old ones around as deprecated alternatives.
Don't wrap {'not': } around Nones if a filter opts out of doing any filtration.
Organize clang plugin modules a bit.

Move filters into filters module. Rename menu module to "menus" to be consistent with our convention of using plurals.
Delete dead routines _process_ctype() and is_function().
Delete the dead next_global_id().
Move the 2 small routines in the extents module into the query module, the only one that uses them.
Move load_template_env() from utils into build, the only module that uses it.

Eventually, it will probably go away, and we'll run everything through a Flask app so we can use url_for and just have fewer code paths.
Kill last remaining import of sqlite.
Move BuildError to exceptions module so it's down at an import leaf.

The motivation for having exceptions in their own module is that they need to be imported into both throwers and catchers, and having them in a leaf module reduces the likelihood of circular imports.
Pull all the tag-handling machinery of build.py and into its own module.

It has a single entry point and can thus be reliably thought of as a separate unit. Now build.py deals only with the side-effecty bits: FS, network, and multiprocess stuff.
Merge a few fixes to filters. Close #346.
Merge some initial module reorganization and dead code removal.