Allocation models

This request contains the allocation models presented at the Synthicity/Urbansim meeting. These are intended to replace the allocation, scaling jobs and capacity location choice models from Opus. These were originally written to return pandas.DataFrame copies but were modified to return pandas.Series to work better within the simulation framework. I think these work pretty well but am open to suggestions or changes.

One goal here was to accommodate more flexible control total table designs. In this implementation, multiple control/amount columns can exist within the same table. Also controls do not need to be present each year: the allocation results are essentially cached until a new amount/control occurs.