A map from table names to aliases. Can be applied to various objects and will
replace all mentions of a table with its alias. For some kinds of objects,
the inverse operation is available as well.
TODO: There is an assumption that one original table has at most one alias.
Otherwise, the applyTo() operations are indeterministic. This is troublesome.
All uses of this class that need applyTo() should probably be redesigned
to use something else than a "real" AliasMap.
TODO: AliasMap and ColumnRenamer are different concepts.
An AliasMap is a bunch of "table AS alias" declarations. A column renamer is
something that can be applied to a column name to yield a new one. It should
be possible to obtain a ColumnRenamer from a declared AliasMap, but they should
be separate classes. AliasMap might also be better called Aliases or AliasSet.