Only set user defaults and synchronize when value changes

This is a really expensive call, and doing it for every split test is really not performant.

@yqiang