Cyclopts

This is a PR of the current changes to Cyclus required for my present work (I wanted to get one in before it got too large). This PR is largely comprised of:

* updating the OSI header files from an errant sed 's/model/agent/g'
* fixed a bug in exchange graph translation that did not account for the exclusivity flag
* all solvers now return objective values
* the calculation of costs associated with unmet demand are now shared by all solvers through the ExchangeSolver API
* the prog solver now uses a cbc CLI-like solve (it's much faster)
* the greedy solver now copies any state of exchange graph that it mutates
In c++ functions can't be overloaded based on return type only - which was (implicitly) suggested in a few comments.  And changing the function signature doesn't necessarily break API does it - in c++ unused return values are just ignored, and there is no non-pointer void value, so I don't see how these could break any code.