Only correct a cross-compiled classpath Once
DO NOT trigger a classpath check at the end of setDesiredXXX

- the listener will pick up soon enough on that
- also, better error messages w/projcet name

Also, more informative error markers.
Only launch project's preferences when noticing something wrong with the classpath
Correct Apply update semantics