For #2809, avoid adding duplicates to the list of welcome projects, and ...

...clean up existing duplicates

In the part of the code where we were explicitly writing out a new set of welcome folders, we were properly detecting duplicates. But there was another bit of code in `isWelcomeProjectPath()` that was accessing the welcome folder array and pushing the current welcome path onto it temporarily, just for the purposes of including it in the list so that the `indexOf()` on the next line would also check it. This seemed safe (although not really all that smart anyway) since we didn't call `setValue()` again. However, it turns out that array/object values returned from the `PreferenceStorage` are actually live objects cached in the preference structure, so if you modify them, the new values will eventually get saved out even without an explicit `setValue()`. Not sure if this is a bug or a feature.

In any case, the fix is simple (don't push the extra value on, just check it separately). I also added a one-time check to clean up existing duplicates due to the original bug--seems important since people might have tons of garbage in their prefs file.