Improve the way to create a cost-function producer.

Previously:
  Producer.new(cost_function: { mean: 100.0, spread: 0.02 })

Now:
  Producer.new(marginal_costs: 100.0, cost_spread: 0.02)
Marginal cost never has an argument
Fix sorting producers with zero output capacity
Add SOLL pricing

The price-setting producer is now determined according to the way the
producer's cost is set.

* Producers whose cost is a function will be price-setting if the
  producer has at least one "unit" of capacity remaining.

* A producer will be price-setting if it is the final producer to be
  assigned a load, and "provides_price?" responds to true. Currently
  only the SupplyInterconnect satisfies this requirement.

* The old system of using the *next* producer will be used whenever a
  cost-function producer has less than a unit of capacity remaining, or
  if the final producer to be assigned demand uses a constant or
  curve-based cost.

Closes #110