WIP - experimenting with encapsulating allocation filters to simplify display logic

Campaign becomes a data container.
AllocationCriteria are introduced.  This is actually a sketchy abstraction, cos there
are many distinct contexts which require different behaviors: SimpleAllocationCriteria
are nothing but the tuple of criteria, so generate a filter which is a single Cartesian
product of criteria.  CompoundAllocationCriteria contain the result of more complex
inclusion / exclusion.  Any IAllocationCriteria can be represented as the sum of simple
products, for easier display and arithmetic.

Change-Id: If5c56cf69ce4e59ffc95115d05506663374d27d0