Made generic MakeProd function and have penalty terms use it.

This also fixes the way no break penalties were done.
reworked bonus to be more understandable.
Corrected issue with long lessons at end of day.
split instructor and pupil preference penalty reporting.