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
Fix Trac #16918
(cherry picked from commit d2e290d3280841647354ddf5ca9abdd974bce0d5)