Fix erroneous float in CoreOpt
The simple optimiser was making an invalid transformation to join points -- yikes. The fix is easy.
I also added some documentation about the fact that GHC uses a slightly more restrictive version of join points than does the paper.
Fix #16918 (closed)