972110 swimming pool

Changes and additions needed to model indoor swimming pools; this work is ready for review
@DeadParrot This diff and the next one had to be manually merged because @RKStrand added an IF block for if it isn't a swimming pool, or if it is, and you had tuned the math for performance.  

In your optimization, it wasn't clear to me how you decided to pull out just part of the numerator, but leave a couple terms.  It did make sense how you pulled out the divisor into a multiplication.  Would you be able to comment here so I can tune the math similarly for the new else-side of this block?  This pool model will not be hit very often, but might as well get it in fast to start with.  

Also, the conditions on this IF block hint to me that it will be slow to check all those things every time in.  Could you provide comment on this so I know whether we need to clean it up?