972110 swimming pool

Changes and additions needed to model indoor swimming pools; this work is ready for review
TempTerm and TempDiv are pulled out into variables because those quantities were being computed twice each and they are not simple/cheap expressions. If you search for them you'll find the other uses a few lines down. While I was pulling out the divisor anyway I made it into a multiplication but that was not the primary purpose. The change saves 15 array lookups, 11 +/-, and one multiply every time you pass through that code. Sometimes I'm scrounging for small performance gains in hot spots and sometimes these silly changes pay off nicely.

If the new if block breaks the ability to reuse these quantities then there is no point to defining them for one-time use. If the surface is "almost never" a pool then computing them will still pay even though you occasionally don't use them -- yes that is hackish so decide whether you can live with it. You could get fancy and define them at the higher scope but with a `( surface.IsPool ? 0.0 : <formula> )` conditional so that you don't pay for the expensive computation unless it will get used.

This addition of features by conditionals in hot spot code is not conducive to performance, as we know.

If I haven't been clear enough let me know. I'm happy to rework this code segment if you tell me which version to start from.