ProfileSettings is now notifies listeners with invokeLater. This has two benefits:
1. The client can't hold a lock while listeners are notified which makes it dead-lock safe.
2. Many subsequent changes to a property merges to a single listener notification when the changes are done on the EDT.