Rewrite cost and science recovery to make it more efficient.

* Store stateful part cost in ConfigNode data and use a built-in function to compute cost. Also add part costs to the container content dialog.
* Don't implement IScienceDataContainer because it allows infinitely retransmitting the data.
* Don't make Unity-called methods private, it leads to mistakes when there is inheritance.