Core Lint: Keep track of why we invalidated join occurrences.
This means instead of just saying something like "invalid join occurance"
lint will now also add a sentence like
"Invalid: Join point under lambda with binder eta_B0".
Originally this MR also allowed join points to appear under casts. But I reverted this change based on the discussion here and elsewhere. So now it just makes join point lint errors easier to debug.