BCodeOpt: test constant folding in the presence of NaNs

Tests are added to verify that intra-method optimizations
don't change the meaning of a program that involves operations
on floating-point NaNs.

These tests are the BCodeOpt counterpart to the tests introduced in
commit 497b0cb09a750fe05cf6c7c1cae2e3b960772ec4
BCodeOpt building block: NullnessPropagator

This transformer simplifies bytecode based on information
determined at compile-time about
definitely-null and definitely-non-null
for values held in local-variables and operant-stack slots.

Details in the documentation for
scala.tools.nsc.backend.bcode.NullnessPropagator
Level 1 intra-method optimiz: NullnessPropagator