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
@rwcarlsen - I'll give you that is a bit of a kludge.  But really want I am saying @gidden is that I don't think that we should have unreachable classes. It creates a part of libcyclus that cannot be accessed by (normal) users (unwilling to write there own header). This runs the long term risk, in my opinion, of accidentally creating public APIs that rely on the unreachable class and are thus unusable. I file this under a general best practice like you said, though it isn't part of the style guide.